因为圣诞节就在门口,是时候用程序员的方式庆祝了。让我们用C建造一棵装饰性的圣诞树。
null
要打印圣诞树,我们正在打印 金字塔 大小不一,一个比另一个小。 对于装饰,a 随机的 每个位置都打印字符。
高度和随机性可以调整。这是一帧又一帧的重复,给人一个真实事件的错觉。
让我们看看代码。
// 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 ( "" ); } } // 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 ( "" ); } } // Driver code int main() { srand ( time (NULL)); int ht = 6; printf ( "*********MERRY CHRISTMAS*********" ); // refresh loop while (1) { clrscr(); printTree(ht); printLog(ht); usleep(RefRate); } return 0; } |
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END