Programa en C++ para dibujar una simulación de semáforo usando gráficos por computadora

En las computadoras, graphics.h se puede usar para proporcionar funciones directas para dibujar diferentes coordenadas, como círculos, rectángulos, etc. Usando estas formas, se pueden dibujar diferentes objetos. Este artículo se enfoca en cómo hacer una simulación de semáforo en Turbo C++ .

Funciones utilizadas:

  • delay(n) : Se utiliza para mantener la misma pantalla durante N milisegundos. Como la ejecución del programa es demasiado rápida, por lo tanto, para observar el programa, se utiliza la función de retardo.
  • setcolor(n) : Esta función se utiliza para establecer el color del cursor. Aquí N es el color que está predefinido en el archivo de encabezado graphics.h
  • settextstyle()/ settextjustify() : esta función se utiliza para diseñar el puntero de texto.
  • rectángulo (x1, y1, x2, y2) : esta función se utiliza para dibujar un rectángulo donde x1, y1 y x2, y2 son las coordenadas de una línea.
  • circle(x, y, r) : Esta es una representación de un círculo donde x, y son las coordenadas del centro del círculo y r es el radio del círculo.

Acercarse:

  • Primero, inicialice el modo gráfico usando la función initgraph() .
  • Cree un rectángulo usando la función rectángulo() y rellene la parte media de dos líneas usando la función setcolor() .
  • Dibuje 3 círculos y coloréelos o diseñelos según corresponda usando funciones como setcolor() , floodfill() y setfillstyle() .
  • Repita el proceso hasta que el semáforo no esté completo.
  • Use la función de retraso() en el medio para mantener la pantalla donde queremos.

A continuación se muestra el programa para el enfoque anterior:

C++

// C++ program for the above approach
#include <conio.h>
#include <dos.h>
#include <graphics.h>
#include <iostream.h>
#include <stdlib.h>
 
// 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();
}

Producción: 

Publicación traducida automáticamente

Artículo escrito por lost1903 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *