Requisito previo: Graphics.h , incluir graphics.h en CodeBlocks
Archivos de encabezado requeridos:
- #incluir <stdio.h>
- #include <conio.h>
- #incluir <gráficos.h>
- #incluir <dos.h>
- #incluir <matemáticas.h>
Funciones utilizadas:
- getmaxx(): It returns the maximum X coordinate for current graphics mode and driver.
- setcolor(): It is used to set the current drawing color to the new color.
- outtextxy(): It is used to display the text or string at a specified point (x, y) on the screen.
- rectángulo() : se utiliza para dibujar un rectángulo.
- Se requieren las coordenadas de la esquina superior izquierda e inferior derecha para dibujar el rectángulo.
- Left especifica la coordenada X de la esquina superior izquierda, top especifica la coordenada Y de la esquina superior izquierda, right especifica la coordenada X de la esquina inferior derecha, bottom especifica la coordenada Y de la esquina inferior derecha.
Acercarse:
- Para dibujar un sistema solar, comience con una elipse concéntrica porque todos los caminos del planeta son elípticos.
- Haz un círculo en el centro de la elipse y rellénalo con pintura amarilla para representar el sol.
- Dibuja diferentes círculos , rellénalos con diferentes colores y luego elige la coordenada correcta para colocarlos todos en el camino de la elipse.
- Cambia las posiciones de todos los planetas para que parezcan moverse en una elipse.
A continuación se muestra el programa C para dibujar el sistema solar usando las funciones anteriores discutidas:
C
// C program to draw solar system using // computer graphics #include <conio.h> #include <dos.h> #include <graphics.h> #include <math.h> #include <stdio.h> // Function to manipulates the position // of planets on the orbit void planetMotion(int xrad, int yrad, int midx, int midy, int x[70], int y[70]) { int i, j = 0; // Positions of planets in their // corresponding orbits for (i = 360; i > 0; i = i - 6) { x[j] = midx - (xrad * cos((i * 3.14) / 180)); y[j++] = midy - (yrad * sin((i * 3.14) / 180)); } return; } // Driver Code int main() { // Initialize graphic driver int gdriver = DETECT, gmode, err; int i = 0, midx, midy; int xrad[9], yrad[9], x[9][70], y[9][70]; int pos[9], planet[9], tmp; // Initialize graphics mode by // passing the three arguments // to initgraph() // &gdriver is the address of gdriver // variable, &gmode is the address of // gmode and "C:\\Turboc3\\BGI" is the // directory path where BGI files // are stored initgraph(&gdriver, &gmode, ""); err = graphresult(); if (err ! = grOk) { // Error occurred printf("Graphics Error: %s", grapherrormsg(err)); return 0; } // Mid positions at x and y-axis midx = getmaxx() - 220; midy = getmaxy() - 150; // Manipulating radius of all // the nine planets Planet[0] = 8; for (i = 1; i < 9; i++) { planet[i] = planet[i - 1] + 1; } // Offset position for the planets // on their corresponding orbit for (i = 0; i < 9; i++) { pos[i] = i * 6; } // Orbits for all 9 planets Xrad[0] = 70, yrad[0] = 40; for (i = 1; i < 9; i++) { xrad[i] = xrad[i - 1] + 38; yrad[i] = yrad[i - 1] + 20; } // Positions of planets on their // corresponding orbits for (i = 0; i < 9; i++) { planetMotion(xrad[i], yrad[i], midx, midy, x[i], y[i]); } while (!kbhit()) { // Drawing 9 orbits Setcolor(WHITE); for (i = 0; i < 9; i++) { setcolor(CYAN); ellipse(midx, midy, 0, 360, xrad[i], yrad[i]); } // Sun at the mid of solar system outtextxy(midx, midy, " SUN"); setcolor(YELLOW); setfillstyle(SOLID_FILL, YELLOW); circle(midx, midy, 30); floodfill(midx, midy, YELLOW); // Mercury in first orbit Setcolor(CYAN); Setfillstyle(SOLID_FILL, CYAN); Outtextxy(x[0][pos[0]], y[0][pos[0]], " MERCURY"); Pieslice(x[0][pos[0]], y[0][pos[0]], 0, 360, planet[0]); // Venus in second orbit Setcolor(GREEN); Setfillstyle(SOLID_FILL, GREEN); Outtextxy(x[1][pos[1]], y[1][pos[1]], " VENUS"); Pieslice(x[1][pos[1]], y[1][pos[1]], 0, 360, planet[1]); // Earth in third orbit Setcolor(BLUE); Setfillstyle(SOLID_FILL, BLUE); Outtextxy(x[2][pos[2]], y[2][pos[2]], " EARTH"); Pieslice(x[2][pos[2]], y[2][pos[2]], 0, 360, planet[2]); // Mars in fourth orbit Setcolor(RED); Setfillstyle(SOLID_FILL, RED); Outtextxy(x[3][pos[3]], y[3][pos[3]], " MARS"); Pieslice(x[3][pos[3]], y[3][pos[3]], 0, 360, planet[3]); // Jupiter in fifth orbit setcolor(BROWN); setfillstyle(SOLID_FILL, BROWN); outtextxy(x[4][pos[4]], y[4][pos[4]], " JUPITER"); pieslice(x[4][pos[4]], y[4][pos[4]], 0, 360, planet[4]); // Saturn in sixth orbit Setcolor(LIGHTGRAY); Setfillstyle(SOLID_FILL, LIGHTGRAY); Outtextxy(x[5][pos[5]], y[5][pos[5]], " SATURN"); Pieslice(x[5][pos[5]], y[5][pos[5]], 0, 360, planet[5]); // Uranus in seventh orbit Setcolor(LIGHTGREEN); Setfillstyle(SOLID_FILL, LIGHTGREEN); Outtextxy (x [6] [pos [6]], y [6] [pos [6]], “ URANUS"); pieslice (x [6] [pos [6]], y [6] [pos [6]], 0, 360, planet [6]); // Neptune in eighth orbit Setcolor (LIGHTBLUE); Setfillstyle (SOLID_FILL, LIGHTBLUE); Outtextxy (x [7] [pos [7]], y [7] [pos [7]], " NEPTUNE"); Pieslice (x [7] [pos [7]], y [7] [pos [7]], 0, 360, planet [7]); // Pluto in ninth orbit Setcolor (LIGHTRED); Setfillstyle (SOLID_FILL, LIGHTRED); Outtextxy (x [8] [pos [8]], y [8] [pos [8]], " PLUTO"); Pieslice (x [8] [pos [8]], y [8] [pos [8]], 0, 360, planet [8]); // Checking for one complete // rotation for (i = 0; i < 9; i++) { if (pos[i] <= 0) { pos[i] = 59; } else { pos[i] = pos[i] - 1; } } // Sleep for 100 milliseconds Delay (100); // Clears graphic screen Cleardevice (); } // 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