Programa C para mostrar a un hombre caminando bajo la lluvia

En los gráficos Turbo C, las funciones de graphics.h se utilizan para dibujar diferentes formas (como un círculo, un rectángulo, etc.) y mostrar texto (cualquier mensaje) en diferentes formatos (diferentes fuentes y colores). Mediante el uso de programas graphics.h, se pueden diseñar animaciones y también juegos. Estos pueden ser útiles para los principiantes.

Este programa demuestra cómo un hombre camina bajo la lluvia con un paraguas, y cuando se presiona una tecla, la lluvia cesa y aparece un arcoíris en el cielo. 

Archivos de encabezado:

Los archivos de encabezado stdio.h , conio.h y graphics.h se incluyen porque las funciones definidas en estos archivos se utilizan en el programa. El comando #define se usa para definir algunos elementos importantes que se usan en todo el programa.

Funciones utilizadas:

  • getmaxx() : el archivo de encabezado graphics.h contiene la función getmaxx() que devuelve la coordenada X máxima para el modo de gráficos y el controlador actuales.
  • getmaxy() : la función getmaxy() devuelve la coordenada Y máxima para el modo de gráficos y el controlador actuales.
  • setcolor() : La función setcolor() establece el color de dibujo actual en el nuevo color.
  • rectángulo() : rectángulo() dibuja un rectángulo. Para dibujar el rectángulo, necesitará las coordenadas de la esquina superior izquierda y la esquina inferior derecha. La coordenada izquierda especifica la coordenada X de la esquina superior izquierda, la coordenada superior especifica la coordenada Y de la esquina superior izquierda, la coordenada derecha especifica la coordenada X de la esquina inferior derecha y la coordenada inferior especifica la Y- coordenada de la esquina inferior derecha.
  • line() : La función line() dibuja una línea desde un punto (x1,y1) hasta un punto (x2,y2), es decir, (x1,y1) y (x2,y2) son los extremos de la línea.
  • setfillstyle() y floodfill() : en graphics.h, setfillstyle() establece el patrón de relleno actual y el color de relleno. floodfill() llena un área cerrada. 
  • circle() : Los gráficos. El archivo de encabezado h contiene la función circle() que dibuja un círculo con un centro en (x, y) y un radio determinado.
  • pieslice() : Esta función dibuja y llena una porción circular con un radio dado r y un centro en (x, y). El corte comienza y termina en s_angle y e_angle, respectivamente. 
  • rand() : la función rand() se usa en C para generar números aleatorios. Si generamos una secuencia de números aleatorios. Cada vez que se ejecuta el programa, la función rand() creará la misma secuencia una y otra vez.
  • delay() : La función de retraso suspende la ejecución de un programa por un período de tiempo específico.
  • arc() : El archivo de encabezado graphics.h contiene la función arc() que dibuja un arco con un centro en (x, y) y un radio determinado.  
  • getch() : La función getch() contiene la salida del programa.
  • kbhit() : determina si se ha presionado una tecla. Incluir el archivo de cabecera “conio. h” en su programa para usarlo. 

Funciones personalizadas:

  • hut(): Crea una cabaña.
  • DrawManAndUmbrella(): Crea un hombre sosteniendo un paraguas. 
  • Lluvia(): Crea la lluvia. 
  • arco iris(): crea un arco iris.

Acercarse:

En este programa, crearemos un escenario con una cabaña, sol y lluvia. En este escenario, un hombre sostiene un paraguas y camina por el suelo. Cuando se presiona una tecla, la lluvia se detiene y aparece un arcoíris.  

  • Nivel del suelo : para crear una línea de suelo, primero usaremos GroundY ScreenHeight para definir el nivel del suelo.
  • Cabaña : La cabaña se construirá para el paisaje. Para la base y el techo se utilizarán rectángulos y líneas. La cabaña será colorida.
  • Hombre y paraguas : construye un hombre que sostiene un paraguas. Un círculo forma la cabeza del hombre y las líneas forman su cuerpo. Las líneas que representan las piernas tienen coordenadas variables, por lo que parece que el hombre camina por el suelo. Usando la función Pieslice, crearemos el cuerpo de un paraguas y líneas para el palo. 
  • Lluvia : cree lluvia usando la función rand() para generar píxeles aleatorios y crear pequeñas líneas para crear un efecto de lluvia 
  • Círculo : Para crear un sol en la esquina superior izquierda usaremos un círculo.
  • Arco iris : crea un arco iris en la esquina superior izquierda usando la función de arco. La función de retardo le da una animación. 
  • La lluvia continúa hasta que se presiona cualquier tecla.
  • El arco iris aparece cuando se presiona una tecla. 

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

C

// C program to implement
// the above approach
#include <conio.h>
#include <graphics.h>
#include <stdio.h>
#define ScreenWidth getmaxx()
#define ScreenHeight getmaxy()
#define GroundY ScreenHeight * 0.75
int ldisp = 0;
  
// Creating a hut
void hut()
{
    setcolor(WHITE);
    rectangle(150, 180, 250, 300);
    rectangle(250, 180, 420, 300);
    rectangle(180, 250, 220, 300);
  
    line(200, 100, 150, 180);
    line(200, 100, 250, 180);
    line(200, 100, 370, 100);
    line(370, 100, 420, 180);
  
    setfillstyle(SOLID_FILL, BROWN);
    floodfill(152, 182, WHITE);
    floodfill(252, 182, WHITE);
    setfillstyle(SLASH_FILL, BLUE);
    floodfill(182, 252, WHITE);
    setfillstyle(HATCH_FILL, GREEN);
    floodfill(200, 105, WHITE);
    floodfill(210, 105, WHITE);
}
  
// Drawing a Man with 
// an umbrella
void DrawManAndUmbrella(int x, 
                        int ldisp)
{
    circle(x, GroundY - 90, 10);
    line(x, GroundY - 80, x, 
         GroundY - 30);
    line(x, GroundY - 70, 
         x + 10, GroundY - 60);
    line(x, GroundY - 65, x + 10, 
         GroundY - 55);
    line(x + 10, GroundY - 60, 
         x + 20, GroundY - 70);
    line(x + 10, GroundY - 55,
         x + 20, GroundY - 70);
  
    line(x, GroundY - 30, 
         x + ldisp, GroundY);
    line(x, GroundY - 30, 
         x - ldisp, GroundY);
  
    pieslice(x + 20, GroundY - 120, 
             0, 180, 40);
    line(x + 20, GroundY - 120, 
         x + 20, GroundY - 70);
}
  
// Creating the Rainfall
void Rain(int x)
{
    int i, rx, ry;
    for (i = 0; i < 400; i++) 
    {
        rx = rand() % ScreenWidth;
        ry = rand() % ScreenHeight;
        if (ry < GroundY - 4) 
        {
            if (ry < GroundY - 120 || 
               (ry > GroundY - 120 && 
               (rx < x - 20 || 
                rx > x + 60)))
                line(rx, ry, 
                     rx + 0.5, ry + 4);
        }
    }
}
  
// Creating the rainbow
void rainbow()
{
    int x, y, i;
  
    circle(ScreenWidth - 100, 
           50, 30);
    setfillstyle(SOLID_FILL, 
                 YELLOW);
    floodfill(ScreenWidth - 100,
              50, WHITE);
  
    ldisp = (ldisp + 2) % 20;
    DrawManAndUmbrella(x, ldisp);
    hut();
    x = getmaxx() / 5;
    y = getmaxy() / 5;
  
    for (i = 30; i < 100; i++) 
    {
        // for animation
        delay(50);
  
        setcolor(i / 10);
  
        arc(x, y, 0, 180, i - 10);
    }
    getch();
}
  
// Driver code
void main()
{
    int gd = DETECT, gm, x = 0;
  
    initgraph(&gd, &gm, 
              "C:\\TurboC3\\BGI");
  
    // executes till any key 
    // is pressed
    while (!kbhit()) 
    {
        hut();
        circle(ScreenWidth - 100, 
               50, 30);
        setfillstyle(SOLID_FILL, 
                     YELLOW);
        floodfill(ScreenWidth - 100, 
                  50, WHITE);
        line(0, GroundY, ScreenWidth, 
             GroundY);
        Rain(x);
  
        ldisp = (ldisp + 2) % 20;
        DrawManAndUmbrella(x, ldisp);
        delay(20);
        cleardevice();
        x = (x + 2) % ScreenWidth;
    }
    // if the key is pressed the 
    // rain stops, rainbow appears
    ldisp = (ldisp + 2) % 20;
    DrawManAndUmbrella(x, ldisp);
    rainbow();
    getch();
}

Pasos para ejecutar este programa:

Paso 1: Vaya a C:\TURBOC3\BIN y mueva el archivo scene.c aquí.

Moviendo el archivo scene.c en C:\TURBOC3\BIN

Moviendo el archivo scene.c en C:\TURBOC3\BIN

Paso 2: abre Turbo C++ .

Paso 3: Haga clic en Archivos y Abrir archivos. Verá el archivo scene.c en la lista. 

Paso 4: seleccione el archivo y presione abrir para abrir el archivo scene.c en Turbo C++. 

Seleccione Archivo

Abriendo el archivo scene.c en turbo c++ 

Paso 5:  Haga clic en Ejecutar para ejecutar el programa de gráficos.

Salida:  Observe a un hombre que sostiene un paraguas caminando bajo la lluvia con una choza y un sol en el paisaje. 

Hombre caminando bajo la lluvia en gráficos C

Hombre caminando bajo la lluvia en gráficos C 

Cuando se presiona una tecla, la lluvia se detiene y aparece un arcoíris.

El arcoíris aparece al presionar una tecla

El arco iris aparece en la pulsación de tecla.

Producción

Salida de trabajo 

Publicación traducida automáticamente

Artículo escrito por codesaurav 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 *