En gráficos C , las funciones de graphics.h se utilizan para dibujar diferentes formas como círculos, rectángulos, etc., mostrar texto (cualquier mensaje) en un formato diferente (diferentes fuentes y colores). Mediante el uso de las funciones en el encabezado graphics.h, también se pueden crear programas, animaciones y diferentes juegos. En este artículo, discutiremos cómo dibujar un bote en movimiento en C usando gráficos .
Funciones utilizadas:
- getmaxx() : el archivo de encabezado graphics.hincluye la función getmaxx(), que devuelve lacoordenada X máxima para el modo de gráficos y el controlador actuales.
- setcolor(N) : La función setcolor() en el archivo de encabezado graphics.h se usa para cambiar el color de dibujo actual al nuevo color.
- setlinestyle(linestyle, uppattern, thick): La función setlinestyle() en el archivo de encabezado graphics.h establece el estilo para todas las líneas dibujadas usando funciones como línea, lineto, rectángulo, drawpoly, etc.
- rectángulo(X1, Y1, X2, Y2) : Se emplea en la creación de un rectángulo. El rectángulo debe dibujarse utilizando las coordenadas de las esquinas superior izquierda e inferior derecha. La coordenada X y la coordenada Y de la esquina superior izquierda son X1 e Y1 y la coordenada X y la coordenada Y de la esquina inferior derecha son X2 e Y2 respectivamente.
- floodfill(patrón, color) : La función se usa para llenar un espacio confinado. Para rellenar el área, se utilizan el patrón de relleno y el color actuales.
Enfoque: siga los pasos a continuación para generar el bote en movimiento:
- Pase tres argumentos a la función initgraph() para inicializar el controlador de gráficos y el modo de gráficos.
- Inicializa la posición del barco considerando dos variables X e Y.
- Crea un río/mar en el que se moverá el bote dibujando un rectángulo y rellénalo con pintura azul claro para que parezca un río/mar.
- Elige las coordenadas para que el barco esté justo encima del río/mar.
- Cambia la posición del bote usando un bucle continuamente para que parezca que se mueve en el río.
A continuación se muestra la implementación del enfoque anterior:
C
// C program to draw the moving boat // using c graphics #include <conio.h> #include <dos.h> #include <graphics.h> #include <stdio.h> // Driver Code int main() { // Initialize graphic driver int gdriver = DETECT, gmode, err; int i = 0, j, x, y, x1, y1, x2, y2; // Start graphics mode by passing // three arguments to initgraph() // &gdriver is the address of the // gdriver variable. // &gmode is the address of gmode // "C:Turboc3BGI" is the directory // path where BGI files are stored initgraph(&gdriver, &gmode, "C:\\Turboc3\\BGI"); err = graphresult(); if (err != grOk) { printf("Graphics Error: %s\n", grapherrormsg(err)); return 0; } j = 0; // Initialize position for boat x = 50, y = getmaxy() / 2 + 140; while (x + 60 < getmaxx() && (!kbhit())) { // Set the positions for rain x1 = 10, i = y1 = 0; x2 = 0, y2 = 50; // Clears graphic screen cleardevice(); // Set the color of river/sea setcolor(LIGHTBLUE); setlinestyle(SOLID_LINE, 1, 1); setfillstyle(SOLID_FILL, LIGHTBLUE); // Draw the river/sea rectangle(0, getmaxy() / 2 + 150, getmaxx(), getmaxy()); floodfill(getmaxx() - 10, getmaxy() - 10, LIGHTBLUE); // Rain drops setlinestyle(DASHED_LINE, 1, 2); while (i < 700) { line(x1, y1, x2, y2); x1 = x1 + 20; y2 = y2 + 50; i++; } // Drawing the boat setlinestyle(SOLID_LINE, 1, 2); setcolor(BROWN); setfillstyle(SOLID_FILL, BROWN); sector(x, y, 180, 360, 50, 10); setcolor(DARKGRAY); setlinestyle(SOLID_LINE, 1, 3); // Leg and body of stick man line(x + 40, y - 15, x + 40, y - 40); line(x + 40, y - 15, x + 45, y - 10); line(x + 45, y - 10, x + 45, y); line(x + 40, y - 15, x + 37, y); // Head and hand of stick man circle(x + 40, y - 45, 5); line(x + 40, y - 35, x + 50, y - 30); line(x + 40, y - 35, x + 35, y - 32); line(x + 35, y - 32, x + 45, y - 25); line(x + 60, y - 45, x + 27, y + 10); // Moving the position of // boat and stick man x++; setcolor(LIGHTBLUE); delay(250); // Clears the graphic device cleardevice(); // Drawing sea/river setlinestyle(SOLID_LINE, 1, 1); setfillstyle(SOLID_FILL, LIGHTBLUE); rectangle(0, getmaxy() / 2 + 150, getmaxx(), getmaxy()); floodfill(getmaxx() - 10, getmaxy() - 10, LIGHTBLUE); // Rain drops setlinestyle(DASHED_LINE, 1, 2); x1 = 10, i = y1 = 0; x2 = 0, y2 = 70; while (i < 700) { line(x1, y1, x2, y2); x1 = x1 + 30; y2 = y2 + 60; i++; } // Drawing the boat setlinestyle(SOLID_LINE, 1, 1); setcolor(BROWN); setfillstyle(SOLID_FILL, BROWN); sector(x, y, 180, 360, 50, 10); // Body and leg of stic man setcolor(DARKGRAY); setlinestyle(SOLID_LINE, 1, 3); line(x + 40, y - 15, x + 40, y - 40); line(x + 40, y - 15, x + 45, y - 10); line(x + 45, y - 10, x + 45, y); line(x + 40, y - 15, x + 37, y); // Head hands of stick man circle(x + 40, y - 45, 5); line(x + 40, y - 35, x + 52, y - 30); line(x + 40, y - 35, x + 37, y - 32); line(x + 37, y - 32, x + 49, y - 25); line(x + 60, y - 45, x + 27, y + 10); // Forwarding the position of // the boat x++; // Sleep for 250 milliseconds delay(250); // Clears the graphic device cleardevice(); j++; } getch(); // Deallocate memory allocated // for graphic screen closegraph(); return 0; }
Producción:
Publicación traducida automáticamente
Artículo escrito por naimishsahu08 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA