>백엔드 개발 >C++ >C 언어로 된 크리스마스 트리 프로그램

C 언어로 된 크리스마스 트리 프로그램

WBOY
WBOY앞으로
2023-09-13 09:05:012226검색

여기서 흥미로운 질문을 보게 될 것입니다. 이 질문에서는 크리스마스 트리를 무작위로 인쇄하는 방법을 살펴보겠습니다. 결과적으로 트리는 크리스마스 트리 조명처럼 반짝일 것입니다.

크리스마스 트리를 인쇄하기 위해 다양한 크기의 피라미드를 인쇄하여 차례대로 배치합니다. 장식용 나뭇잎의 경우 주어진 문자 목록에서 임의의 문자가 인쇄됩니다. 높이와 무작위성은 조정 가능합니다.

트리가 생성된 후에는 전체 화면이 지워졌다가 다시 생성되기 때문에 깜박이는 나무처럼 보입니다.

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <unistd.h>
#define REFRESH_RATE 40000
#define RANDOM_NESS 5 // The higer value indicates less random
void clear_screen() {
   system("@cls||clear");
}
void display_random_leaf() {
   char type_of_leaves[5] = { &#39;.&#39;, &#39;*&#39;, &#39;+&#39;, &#39;o&#39;, &#39;O&#39; }; //these are the leaf types
   int temp = rand() % RANDOM_NESS;
   if (temp == 1)
      printf("%c ", type_of_leaves[rand() % 5]); //if temp is 1, then use other leaves
   else
      printf("%c ", type_of_leaves[1]); //otherwise print *
}
void tree_triangle(int f, int n, int toth) {
   int i, j, k = 2 * toth - 2;
   for (i = 0; i < f - 1; i++)
      k--;
   for (i = f - 1; i < n; i++) { //i will point the number of rows
      for (j = 0; j < k; j++) // Used to put spaces
      printf(" ");
         k = k - 1;
      for (j = 0; j <= i; j++)
         display_random_leaf();
      printf("</p><p>");
   }
}
void display_tree(int h) {
   int start = 1, end = 0, diff = 3;
   while (end < h + 1) {
      end = start + diff;
      tree_triangle(start, end, h);
      diff++;
      start = end - 2;
   }
}
void display_log(int n) { //print the log of the tree
   int i, j, k = 2 * n - 4;
   for (i = 1; i <= 6; i++) {
      for (j = 0; j < k; j++)
         printf(" ");
      for (j = 1; j <= 6; j++)
         printf("#");
      printf("</p><p>");
   }
}
main() {
   srand(time(NULL));
   int ht = 15;
   while (1) {
      clear_screen();
      display_tree(ht);
      display_log(ht);
      usleep(REFRESH_RATE); //use sleep before replacing
   }
}

출력

C 언어로 된 크리스마스 트리 프로그램

위 내용은 C 언어로 된 크리스마스 트리 프로그램의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제