第2节:一个简单的EGE程序

#ifndef _GRAPHICS_H_
#define _GRAPHICS_H_
#ifndef __cplusplus
#error You must use C++ compiler, or you need filename with '.cpp' suffix
#endif
#include "ege.h"
using namespace ege;
#endif #include <iostream>
#include <graphics.h> void main()
{
initgraph(640, 480);//创建绘图窗口 outtextxy(100, 300, "aloha world");//在指定坐标向右输出字符串
line(10, 10, 400, 400);//在指定坐标输出线段 ege::getch();//等待输入字符
closegraph();//关闭绘图窗口
}

第3节:EGE的输入输出

画出椭圆,填充颜色,并随机变化颜色

#include <graphics.h>
void mainloop()
{
//is_run检测程序是否收到关闭消息
//收到则返回false,退出程序
//delay_fps 控制帧率,60表示
//平均延时”为1000/60毫秒
for (; is_run(); delay_fps(60))
{
// todo: 逻辑更新
setfillcolor(EGERGB(random(255), random(255), random(255)));//设置颜色
// todo: 图形更新
// 清屏
cleardevice();
fillellipse(200, 200, 50, 30);//输出椭圆,前两个参数是圆心的坐标,后两个参数是长轴和短轴的半径
}
} int main(void)
{
//INIT_DEFAULT ege默认配置
//INIT_NOFORCEEXIT 由程序本身检测和控制结束
//INIT_RENDERMANUAL与setrendermode(RENDER_MANUAL)等效
setinitmode(INIT_DEFAULT|INIT_NOFORCEEXIT);
//图形初始化,窗口尺寸640x480
initgraph(640, 480);
//随机数初始化,如果需要使用随机数的话
randomize();
//绘图更新模式设置为手动,仅调用delay_fps/delay_ms
//等函数时才刷新,避免闪烁。在RENDER_AUTO模式下,任
//何绘图操作进行时都可能刷新,甚至刚cleardevice就显示
//导致屏幕上有时仅显示一个背景而没有其它内容导致闪烁
setrendermode(RENDER_MANUAL);
// 程序主循环
mainloop();
closegraph();
return 0;
}

画出圆,并移动

#include <graphics.h>
void mainloop()
{
// 动画控制变量,控制横坐标,初始值为0
int x = 0;
setcolor(EGERGB(0, 0xFF, 0));//设置绘图线条颜色
setfillcolor(EGERGB(0, 0, 0xFF));//设置填充颜色 for ( ; is_run(); delay_fps(60) )
{
// todo: 逻辑更新
//计算新坐标,右移一个像素,若等于440则移回x=0
x = ( x + 1 ) % 440; // todo: 图形更新
//清屏,重新在新的位置绘图图像
cleardevice();
//圆心坐标是 (x + 半径)
fillellipse(x + 100, 200, 100, 100);
}
} int main()
{
//INIT_ANIMATION相当于INIT_NOFORCEEXIT|
// INIT_DEFAULT|INIT_RENDERMANUAL
//下面就不需要再多一步setrendermode
setinitmode(INIT_ANIMATION);
// 图形初始化,窗口尺寸640x480
initgraph(640, 480);
// 随机数初始化,如果需要使用随机数的话
randomize();
// 程序主循环
mainloop();
// 关闭绘图设备
closegraph();
return 0;
}
04-27 00:54