Programa en C para dibujar el Taj Mahal usando gráficos

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.), 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.

Función utilizada:

  • arc(x, y, start_ang, end_ang, r): una función del archivo de encabezado graphics.h que dibuja un arco con (x, y) como centro, start_ang es su ángulo inicial, end_ang es su ángulo final y r como radio.
  • rectángulo (l, t, r, b) : una función del archivo de encabezado graphics.h que dibuja un rectángulo de izquierda (l) a derecha (r) y de arriba (t) a abajo (b).
  • line(a1, b1, a2, b2) : Una función del archivo de encabezado graphics.h que dibuja una línea desde el punto (a1, b1) hasta el punto (a2, b2).

Acercarse:

  • Aquí se definen tres funciones taj_body(), left_minars() y right_minars().
  • En la función main(), se llama a la primera función taj_body(). En esta función, el edificio del Taj Mahal comenzó a crearse a partir de una Base Rectángulo utilizando la función rectángulo().
  • Luego se hacen dos Rectángulos usando la función rectángulo(). En Smaller Rectangle, una puerta se crea utilizando la función line().
  • Luego, el Domo de cebolla se crea utilizando la función arc(). En ese domo, se crea un remate mediante el uso de funciones line().
  • A ambos lados de ese domo, se crean dos domos más pequeños usando la función arc(), y también se dibuja un remate usando la función line().
  • Luego, se implementaron otras decoraciones utilizando principalmente la función de line() y la función de rectángulo() en algunos casos. Estas decoraciones se tienen que implementar a ambos lados del Taj Mahal.
  • Después de completar la función taj_body(), se llama a la función left_minars() para implementar los minaretes del lado izquierdo. Estos dos minaretes están completamente hechos usando la función line() y por cálculo.
  • Luego se llama a la función right_minars() para implementar los minaretes del lado derecho. Estos dos minaretes también están completamente hechos usando la función line() y por cálculo.

C

// C program to implement
// the above approach
#include <conio.h>
#include <graphics.h>
#include <stdio.h>
  
// Declaring functions used
// in this program
void taj_body();
void left_minars();
void right_minars();
  
// Driver Code
void main()
{
    int gd = DETECT, gm;
  
    // Initialize of gdriver with
    // DETECT macros
    initgraph(&gd, &gm, "C:\\turboc3\\bgi");
  
    // Calling taj_body() function
    taj_body();
  
    // Calling left_minars() function
    left_minars();
  
    // Calling right_minars() function
    right_minars();
  
    // Holding screen for a while
    getch();
  
    // Close the initialized gdriver
    closegraph();
}
  
void taj_body()
{
    // Main Base
    rectangle(10, 650, 1350, 680);
    rectangle(550, 300, 800, 650);
    rectangle(540, 290, 810, 650);
  
    // Left Door Line
    line(600, 650, 600, 400);
  
    // Right Door Line
    line(750, 650, 750, 400);
  
    line(600, 400, 675, 390);
    line(675, 390, 750, 400);
    arc(675, 240, 330, 210, 155);
  
    // Main Finial
    line(655, 85, 675, 30);
    line(675, 30, 695, 87);
  
    // Left Side
    line(540, 315, 445, 315);
    arc(490, 315, 0, 180, 45);
  
    // Left Finial
    line(480, 270, 490, 250);
    line(490, 250, 500, 270);
  
    // Left Vertical Line
    line(445, 315, 445, 355);
  
    // Lower Left Join
    line(445, 355, 540, 355);
  
    // Again Lower Left Join
    line(445, 375, 540, 375);
  
    // Left Tangent
    line(445, 355, 375, 370);
  
    // Lower Left Tangent
    line(445, 375, 375, 390);
  
    // Left Last Vertical
    line(375, 370, 375, 650);
  
    // Middle Left Rectangle
    rectangle(450, 390, 530, 650);
  
    // Left Rectangle Divider
    line(450, 520, 530, 520);
  
    // Left Rectangle Side Structure
    line(440, 650, 440, 390);
    line(385, 650, 385, 405);
    line(440, 390, 385, 405);
  
    // Divider
    line(440, 520, 385, 520);
  
    // Creating Left Lower Spike
    line(460, 650, 460, 585);
    line(520, 650, 520, 585);
    line(460, 585, 490, 555);
    line(520, 585, 490, 555);
  
    // Creating Left Upper Spike
    line(460, 520, 460, 455);
    line(520, 520, 520, 455);
    line(460, 455, 490, 425);
    line(520, 455, 490, 425);
  
    // Right Side
    line(810, 315, 905, 315);
    arc(860, 315, 0, 180, 45);
  
    // Right Finial
    line(850, 270, 860, 250);
    line(860, 250, 870, 270);
  
    // Right Vertical Line
    line(905, 315, 905, 355);
    line(905, 355, 810, 355);
  
    // Lower Right Join
    line(905, 355, 810, 355);
  
    // Again Right Left Join
    line(905, 375, 810, 375);
  
    // Right Tangent
    line(905, 355, 975, 370);
  
    // Lower Right Tangent
    line(905, 375, 975, 390);
  
    // Right Last Vertical
    line(975, 370, 975, 650);
  
    // Middle Right Rectangle
    rectangle(820, 390, 900, 650);
  
    // Right Rectangle Divider
    line(820, 520, 900, 520);
  
    // Right Rectangle Side Structure
    line(910, 650, 910, 390);
    line(965, 650, 965, 405);
    line(910, 390, 965, 405);
  
    // Divider
    line(910, 520, 965, 520);
  
    // Creating Right Lower Spike
    line(830, 650, 830, 585);
    line(890, 650, 890, 585);
    line(830, 585, 860, 555);
    line(890, 585, 860, 555);
  
    // Creating Right Upper Spike
    line(830, 520, 830, 455);
    line(890, 520, 890, 455);
    line(830, 455, 860, 425);
    line(890, 455, 860, 425);
}
  
void left_minars()
{
    // 1st Left Minar
    // 1st Step
    line(20, 650, 30, 500);
    line(120, 650, 110, 500);
    line(110, 500, 30, 500);
  
    // 2nd Step
    line(30, 500, 20, 480);
    line(110, 500, 120, 480);
    line(120, 480, 20, 480);
    line(30, 480, 40, 330);
    line(110, 480, 100, 330);
    line(40, 330, 100, 330);
    line(40, 330, 30, 310);
    line(100, 330, 110, 310);
    line(110, 310, 30, 310);
  
    // 3rd Step
    line(40, 310, 50, 160);
    line(100, 310, 90, 160);
    line(50, 160, 90, 160);
    line(50, 160, 40, 140);
    line(90, 160, 100, 140);
    line(40, 140, 100, 140);
    line(40, 140, 60, 120);
    line(100, 140, 80, 120);
    line(60, 120, 80, 120);
    line(60, 120, 70, 100);
    line(70, 100, 80, 120);
  
    // 2nd Left Minar
    // 1st Step
    line(170, 650, 180, 575);
    line(270, 650, 260, 575);
    line(180, 575, 260, 575);
  
    // 2nd Step
    line(180, 575, 170, 555);
    line(260, 575, 270, 555);
    line(170, 555, 270, 555);
    line(180, 555, 190, 480);
    line(260, 555, 250, 480);
    line(190, 480, 250, 480);
  
    // 3rd Step
    line(190, 480, 180, 460);
    line(250, 480, 260, 460);
    line(180, 460, 260, 460);
    line(190, 460, 200, 385);
    line(250, 460, 240, 385);
    line(200, 385, 240, 385);
    line(200, 385, 190, 365);
    line(240, 385, 250, 365);
    line(190, 365, 250, 365);
    line(190, 365, 210, 345);
    line(250, 365, 230, 345);
    line(210, 345, 230, 345);
    line(210, 345, 220, 325);
    line(220, 325, 230, 345);
}
  
void right_minars()
{
    // 1st Right Minar
    // 1st Step
    line(1340, 650, 1330, 500);
    line(1240, 650, 1250, 500);
    line(1330, 500, 1250, 500);
  
    // 2nd Step
    line(1330, 500, 1340, 480);
    line(1250, 500, 1240, 480);
    line(1240, 480, 1340, 480);
    line(1330, 480, 1320, 330);
    line(1250, 480, 1260, 330);
    line(1320, 330, 1260, 330);
    line(1320, 330, 1330, 310);
    line(1260, 330, 1250, 310);
    line(1250, 310, 1330, 310);
  
    // 3rd Step
    line(1320, 310, 1310, 160);
    line(1260, 310, 1270, 160);
    line(1310, 160, 1270, 160);
    line(1310, 160, 1320, 140);
    line(1270, 160, 1260, 140);
    line(1320, 140, 1260, 140);
    line(1320, 140, 1300, 120);
    line(1260, 140, 1280, 120);
    line(1300, 120, 1280, 120);
    line(1280, 120, 1290, 100);
    line(1290, 100, 1300, 120);
  
    // 2nd Right Minar
    // 1st Step
    line(1090, 650, 1100, 575);
    line(1190, 650, 1180, 575);
    line(1100, 575, 1180, 575);
  
    // 2nd Step
    line(1100, 575, 1090, 555);
    line(1180, 575, 1190, 555);
    line(1090, 555, 1190, 555);
    line(1100, 555, 1110, 480);
    line(1180, 555, 1170, 480);
    line(1110, 480, 1170, 480);
  
    // 3rd Step
    line(1110, 480, 1100, 460);
    line(1170, 480, 1180, 460);
    line(1180, 460, 1100, 460);
    line(1110, 460, 1120, 385);
    line(1170, 460, 1160, 385);
    line(1120, 385, 1160, 385);
    line(1110, 365, 1120, 385);
    line(1160, 385, 1170, 365);
    line(1110, 365, 1170, 365);
    line(1110, 365, 1130, 345);
    line(1170, 365, 1150, 345);
    line(1130, 345, 1150, 345);
    line(1130, 345, 1140, 325);
    line(1140, 325, 1150, 345);
}

Producción:

Output

TAJ MAHAL

Publicación traducida automáticamente

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