📜  使用计算机图形绘制交通灯模拟的 C++ 程序

📅  最后修改于: 2022-05-13 01:54:55.023000             🧑  作者: Mango

使用计算机图形绘制交通灯模拟的 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 等的准备工作,请参阅完整的面试准备课程