Feliz Navidad (Programa para Árbol de Navidad en C)

Como la Navidad está a las puertas, es hora de celebrarla a la manera del programador. Construyamos un árbol de Navidad decorativo en C.

Para imprimir un árbol de Navidad, estamos imprimiendo pirámides de varios tamaños, una debajo de la otra.
Para la decoración, se imprime un carácter aleatorio en cada posición.

La altura y la aleatoriedad se pueden ajustar. Esto se ha repetido cuadro tras cuadro para dar la ilusión de un evento real.

Ejemplo:

Veamos el código.

// C program to print a  Christmas tree
// It is recommended is try it with a desktop 
// compiler like CodeBlocks.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <unistd.h>
  
#define RefRate 40000
#define randomness 5 // high means less random
  
// Clear the shell
void clrscr()
{
    system("@cls||clear");
}
  
// Print a random character giving preference 
// to *
void printRandLeaf()
{
    char leaftypes[5] = { '.', '*', '+', 'o', 'O' };
    int temp = rand() % randomness;
  
    // Giving preference to *
    if (temp == 1)
        printf("%c ", leaftypes[rand() % 5]);
    else
        printf("%c ", leaftypes[1]);
}
  
void triangle(int f, int n, int toth)
{
    int i, j, k = 2 * toth - 2;
  
    for (i = 0; i < f - 1; i++)
        k--;
  
    // number of rows
    for (i = f - 1; i < n; i++) {
  
        // space handler
        for (j = 0; j < k; j++)
            printf(" ");
  
        // decrementing k after each loop
        k = k - 1;
  
        // number of columns, printing stars
        for (j = 0; j <= i; j++)
            printRandLeaf();
  
        printf("\n");
    }
}
  
// Prints multiple triangles
void printTree(int h)
{
    int start = 1, stop = 0, diff = 3;
    while (stop < h + 1) {
        stop = start + diff;
        triangle(start, stop, h);
        diff++;
        start = stop - 2;
    }
}
  
// Prints bottom part.
void printLog(int n)
{
    int i, j, k = 2 * n - 4;
  
    for (i = 1; i <= 6; i++) {
  
        // space handler
        for (j = 0; j < k; j++)
            printf(" ");
  
        for (j = 1; j <= 6; j++)
            printf("#");
  
        printf("\n");
    }
}
  
// Driver code
int main()
{
    srand(time(NULL));
    int ht = 6;
  
    printf("\n*********MERRY CHRISTMAS*********\n\n");
  
    // refresh loop
    while (1) {
        clrscr();
        printTree(ht);
  
        printLog(ht);
        usleep(RefRate);
    }
  
    return 0;
}

Publicación traducida automáticamente

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