//下午闲着的时候看见easy-x,就有尝试了一下,以前和vs无法正常工作删除了,这一次最新版还不错,识别vs2019.
//这个库是真的简单,在首页看到大神的纯软件算法实现 3D 渲染(by 桌子),想学习一下,以前用unity,unreal,cocos都有点复杂,我的需求很简单,就是画个圆的级别,尝试一下图形界面,正如easy-x引言中所说,windowapi图形编程太复杂了,尤其对于新手,创建窗口类,注册窗口类,加载窗口,显示窗口,更新窗口,还要接受消息,我学完大概的流程,会写一个空白窗口就已经消耗掉了所有的热情。
//但是,easy-x不一样,超级简单。
#include <graphics.h> // 引用图形库头文件
#include <conio.h>
int main()
{
initgraph(640, 480); // 创建绘图窗口,大小为 640x480 像素
circle(200, 200, 100); // 画圆,圆心(200, 200),半径 100
_getch(); // 按任意键继续
closegraph(); // 关闭绘图窗口
}
//这是他给的新手示例 ,超级复杂的过程被init,close给封装了,可以尽情享受图形编程的趣味,函数也超级简单,文档也全中文,和gdi还可以结合。
在文档中给出四个示例,都超级有趣。1:字符 2:星空 3:鼠标 4:彩虹
第一个我准备明天上午试试改成字符可以向下流动并渐隐的黑客帝国那种效果。(虽然现在这种也很酷)
第二个,我给改变了一下,我正在学c++,所以把star结构体和两个函数并成了class Star,感觉结构清晰了一点。另外颜色改成了彩色,方向算法我准备明天上午想一下,变成从屏幕中央向四周放射那种,或者,可以提供选择,通过键盘,进行星星运动轨迹操控,(感觉好像是游戏雏形了啊)
代码如下,
#include<graphics.h> //Easy-X绘图库
#include<conio.h> //主要用到Sleep(),来控制刷新频率
#include<time.h>//产生随机数
#define star_count 300 //星星数量
#define win_w 1200//屏幕宽度
#define win_h 600//屏幕高度
class Star//星星类
{
private:
int x;//星星坐标
int y;
int speed;//星星速度
int color_r, color_g, color_b;//星星颜色,r,g,b是红绿蓝缩写,我用他们表示RGB颜色
public:
void init_star()//初始化,给星星位置,速度,颜色
{
x = (rand() % 80) * 10;
y = (rand() % 40) * 10;
speed = (rand() % 5000 )/ 1000 + 1;
color_r = rand() % 256;
color_g = rand() % 256;
color_b= rand() % 256;
}
void move_star()//控制星星移动,利用 删除-绘制 完成
{
putpixel(x, y, 0);//putpixel(),用来控制某个像素点颜色,x,y是坐标,0是黑色,用0x000000表示也行
x += speed;//这两行是星星运动算法,明天研究下
y += speed;
if ( x >= win_w || y >= win_h )//这个很重要,我一开始没有,300个星星移动就没有了,仔细看才发现忘了边界处理了
{
init_star();
}
putpixel(x, y, RGB(color_r, color_g, color_b));
}
};
int main()
{
srand((unsigned)time(NULL));
initgraph(win_w, win_h);//建立窗口
Star star[star_count];
for ( int i = 0; i != star_count; i++ )//初始化
{
star[i].init_star();
}
while ( !_kbhit() )//不按键盘,就一直有星星跑
{
for ( int i = 0; i != star_count; i++ )
{
star[i].move_star();
}
Sleep(20);
}
closegraph();//注销窗口
}
程序挺简单,但效果还行,就是运动的算法有点丑,明天记得想个更有趣的算法。
//第二天的补充,在练习其他的时候发现不对,init_star()不就相当于构造函数了吗,感觉自己好菜。
本文介绍了作者使用Easy-X库尝试图形编程的经历,通过简化复杂的窗口API,实现了彩色星空的显示。作者将原示例的星空改为彩色,并计划改进星星的运动算法,使其从屏幕中央向四周放射,甚至考虑加入键盘操控,使程序更有趣。
1万+

被折叠的 条评论
为什么被折叠?



