这个文章主要是记录对C++红绿灯程序的学习,代码部分是学习的代码骑士博主的,之前一直想学对红绿灯程序的编写,拖了好久,很感谢代码骑士博主的分享,让我浅浅地入门。大致分析一下这个红绿灯小程序。
绘图窗口大小的设置
initgraph(640, 480); // 创建绘图窗口,大小为 640x480 像素
设置当前设备绘图背景色
setbkcolor(WHITE); //设置背景色
使用当前背景色,清空绘图设备
cleardevice(); //使用当前背景色,并清空设备
在setbkcolor设置背景色之后,并不会改变现有背景色,而是只改变背景色的值,之后再执行绘图语句,例如 outtextxy,会使用新设置的背景色值。如果需要修改全部背景色,可以在设置背景色后执行 cleardevice() 函数。
设置当前设备填充颜色
setfillcolor(BLACK);
绘制画有边框的填充矩形
fillrectangle(220,30,380,420);
fillrectangle(280,420,320,490);
#include<graphics.h>
#include<conio.h>
#include<iostream>
#include<time.h>
using namespace std;
int main()
{
const int width = 640;
const int height = 480;
initgraph(width, height);//640是画布宽度,480是画布高度
int x = 300, y = 100, r = 50, s = 20;
setbkcolor(WHITE);
cleardevice();
setfillcolor(BLACK);
fillrectangle(220, 30, 380, 420);
fillrectangle(280, 420, 320, 490);
clock_t start, now;
while (1)
{
start = clock();
float maxTime = 10;
float remainTime = maxTime;
while (remainTime >= 0)
{
now = clock();
double duration = (double(now - start) / CLOCKS_PER_SEC);
remainTime = maxTime - duration;
if (remainTime <= 10 && remainTime >= 6)
{
//灯1
setfillcolor(RED);
fillcircle(x, y, r);
//灯2
setfillcolor(GREEN);
fillcircle(x, y + s + 2 * r, r);
//灯3
setfillcolor(YELLOW);
fillcircle(x, y + 2 * s + 4 * r, r);
}
else if (remainTime < 6 && remainTime >= 3)
{
setfillcolor(YELLOW);
fillcircle(x, y, r);
setfillcolor(RED);
fillcircle(x, y + s + 2 * r, r);
setfillcolor(GREEN);
fillcircle(x, y + 2 * s + 4 * r, r);
}
else if (remainTime < 3 && remainTime >= 1)
{
setfillcolor(GREEN);
fillcircle(x, y, r);
setfillcolor(YELLOW);
fillcircle(x, y + s + 2 * r, r);
setfillcolor(RED);
fillcircle(x, y + 2 * s + 4 * r, r);
}
}
}
_getch();//暂停,等待键盘按键
closegraph();//关闭当前画布
return 0;
}