使用计算机图形绘制交通灯模拟的 C++ 程序
在计算机中,graphics.h 可以提供直接的函数来绘制不同的坐标,如圆形、矩形等。使用这些形状,可以绘制不同的对象。本文重点介绍如何在 Turbo C++ 中进行交通灯模拟。
使用的功能:
- delay(n) :用于保持同一屏幕N毫秒。由于程序执行速度太快,因此为了观察程序,使用了延迟函数。
- setcolor(n) :该函数用于设置光标的颜色。这里N是在 graphics.h 头文件中预定义的颜色
- settextstyle()/ settextjustify() :此函数用于文本指针的样式目的。
- rectangle(x1, y1, x2, y2) :该函数用于绘制一个矩形,其中 x1、y1 和 x2、y2 是一条线的坐标。
- circle(x, y, r) :这是一个圆的表示,其中 x, y 是圆心的坐标,r 是圆的半径。
方法:
- 首先,使用函数initgraph()初始化图形模式。
- 使用 rectangle()函数创建一个矩形,并使用setcolor()函数填充两条线的中间部分。
- 使用setcolor() 、 floodfill()和setfillstyle()等函数绘制 3 个圆圈并相应地为它们着色/设置样式。
- 重复该过程,直到红绿灯未完成。
- 在两者之间使用delay()函数将屏幕保持在我们想要的位置。
以下是上述方法的程序:
C++
// C++ program for the above approach
#include
#include
#include
#include
#include
// Driver Code
void main()
{
clrscr();
int gd = DETECT, gm, midx, midy;
// Passed three arguments to the
// initgraph function to initialize
// graphics mode
initgraph(&gd, &gm, "C:\\TC\\BGI");
midx = getmaxx() / 2;
midy = getmaxy() / 2;
// Set color of intro text as cyan
setcolor(CYAN);
// Below just styling the text
settextstyle(TRIPLEX_FONT, HORIZ_DIR, 4);
settextjustify(CENTER_TEXT, CENTER_TEXT);
outtextxy(midx, midy - 10, "TRAFFIC LIGHT SIMULATION");
outtextxy(midx, midy + 10, "PRESS ANY KEY TO START");
getch();
cleardevice();
setcolor(WHITE);
settextstyle(DEFAULT_FONT, HORIZ_DIR, 1);
// rectangle lines
rectangle(midx - 30, midy - 80, midx + 30, midy + 80);
// Circle for red light
circle(midx, midy - 50, 22);
setfillstyle(SOLID_FILL, RED);
floodfill(midx, midy - 50, 22);
setcolor(BLUE);
// Text inside red light
outtextxy(midx, midy - 50, "STOP");
// Delay of 2 sec
delay(2000);
graphdefaults();
cleardevice();
setcolor(WHITE);
// Drawing lines of rectangle
// for traffic light
rectangle(midx - 30, midy - 80,
midx + 30, midy + 80);
// Drawing yellow circle for light
circle(midx, midy - 50, 22);
setfillstyle(SOLID_FILL, YELLOW);
floodfill(midx, midy, WHITE);
setcolor(BLUE);
// Setting inner text to ready
outtextxy(midx - 18, midy - 3, "READY");
delay(2000);
cleardevice();
setcolor(WHITE);
// Drawing lines of rectangle
// for traffic light
rectangle(midx - 30, midy - 80,
midx + 30, midy + 80);
// Circle for green light
circle(midx, midy + 50, 22);
setfillstyle(SOLID_FILL, GREEN);
floodfill(midx, midy + 50, WHITE);
setcolor(BLUE);
// Setting inner text to GO
outtextxy(midx - 7, midy + 48, "GO");
setcolor(RED);
settextstyle(TRIPLEX_FONT,
HORIZ_DIR, 4);
outtextxy(midx - 150, midy + 100,
"Brrrmmm");
getch();
}
输出:
想要从精选的视频和练习题中学习,请查看C++ 基础课程,从基础到高级 C++ 和C++ STL 课程,了解语言和 STL。要完成从学习语言到 DS Algo 等的准备工作,请参阅完整的面试准备课程。