C语言如何实现一个闪烁的圣诞树
发表于:2025-11-09 作者:千家信息网编辑
千家信息网最后更新 2025年11月09日,小编给大家分享一下C语言如何实现一个闪烁的圣诞树,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!效果图图1 圣诞树下面来看下
千家信息网最后更新 2025年11月09日C语言如何实现一个闪烁的圣诞树
小编给大家分享一下C语言如何实现一个闪烁的圣诞树,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
效果图
图1 圣诞树
下面来看下源码,如下所示:
#include#include #include #include #include #include #define N 15char str[] = {'*', ' ', '@', ' ', '#', ' ', '\'', ' ', '$', ' ', '%', ' ', '&', ' ', '!'}; void color(int a){ SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), a);} void getCoord(double y, double x){ COORD pos = { x,y }; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);} void hideCursor(){ CONSOLE_CURSOR_INFO cursor= { 1, 0 }; SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor);} void layer(int x, int y, int num, int col) { color(col); getCoord(x, y); int idx = rand()%N; printf("%c", str[idx]); for(int k = 1; k <= num; ++k) { idx = rand()%N; getCoord(x + k - 1, y); printf("%c", str[idx]); for(int i = 1; i <= (k*2-1)/2; i++) { getCoord(x + k - 1, y - i); idx = rand()%N; printf("%c", str[idx]); getCoord(x + k - 1, y + i); idx = rand()%N; printf("%c", str[idx]); } } } void triangle(int x, int y, int num, int col) { getCoord(x, y); color(col); printf("*"); for(int i = 1; i <= num; ++i) { int x1 = x + i; int y1 = y - i; for(int j = 0; j < i * 2 + 1; ++j) { getCoord(x1, y1 + j); printf("*"); } }} void triangleRight(double x, double y, double num, double col) { getCoord(x, y*2); color(col); printf("*"); for(int i = 1; i <= num; ++i) { double x1 = x - i; double y1 = y - i; for(int j = 0; j < i * 2 + 1; ++j) { getCoord(x1 + j, y1 * 2); printf("*"); } }} void triangleLeft(double x, double y, double num, double col) { getCoord(x, y*2); color(col); printf("*"); for(int i = 1; i <= num; ++i) { double x1 = x - i; double y1 = y + i; for(int j = 0; j < i * 2 + 1; ++j) { getCoord(x1 + j, y1 * 2); printf("*"); } }} void rectangle(int x, int y, int h, int w, int col1, int col2) { color(col1); for(int i = 0; i <= h; ++i) { for(int j = 0; j <= w/2; ++j) { getCoord(x + i, y - j); if(i % 3 || j % 2) printf("*"); else { color(col2); printf("!"); color(col1); } getCoord(x + i, y + j); if(i % 3 || j % 2) printf("*"); else { color(col2); printf("!"); color(col1); } } }} int main() { hideCursor(); int colTop = 4; int colMid = 4; int colEnd = 13; while(true) { colTop = colTop == 4 ? 9 : 4; triangleLeft(5, 27.8, 2, colTop); triangleRight(5, 27.8, 2, colTop); Sleep(100); layer(5, 55, 10, 2); layer(9, 55, 16, 2); layer(14, 55, 26, 2); colMid = colMid == 4 ? 5 : 4; triangle(11, 55, 3, colMid); triangle(19, 60, 3, colMid); triangle(29, 42, 3, colMid); triangle(31, 57, 3, colMid); colEnd = colEnd == 13 ? 1 : 13; rectangle(40, 55, 15, 18, 6, colEnd); Sleep(200); } return 0;}
上面便是圣诞树的简单实现,下面来说下原理:
函数 layer 画出树的层次,根据坐标来输出位置;
void layer(int x, int y, int num, int col)
函数 triangle 画出小三角形,作为点缀;
void triangle(int x, int y, int num, int col)
函数 triangleRight 和 triangleLeft 画出圣诞树顶部的蝴蝶结;
void triangleRight(double x, double y, double num, double col);void triangleLeft(double x, double y, double num, double col);
函数 hideCursor 负责隐藏光标;
void hideCursor()
函数 getCoord 负责确定输出字符的位置;
void getCoord(double y, double x)
函数 color 负责设置输出的颜色;
void color(int a)
主函数的原理如下:
void color(int a)
主函数通过一个 while 循环,不断刷新圣诞树和圣诞树点缀的颜色。
以上是"C语言如何实现一个闪烁的圣诞树"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
函数
圣诞树
篇文章
输出
语言
位置
内容
原理
颜色
三角形
不怎么
不断
光标
坐标
大部分
字符
层次
效果
效果图
更多
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
管理员链接服务器命令
网络安全风险点包括
共青团网络安全答案
国网认证的网络安全产品
苏州scada软件开发
关系型数据库有哪些关系种类
服务器漏洞扫描工具
互联网科技对我们的影响
wos中的会议论文数据库
网络技术研究院 廖军
上海关于网络技术的大学
北京三涂网络技术有限公司
盐城软件开发咨询热线
网络安全的计算题
国防大学数据库
运维工程师和数据库有什么联系
维护自己计算机网络安全
新冠下网络安全相关数据
辽宁安卓软件开发定做
上海市人口普查数据库
服务器sas硬盘盒
网络安全与远程控制
江苏项目软件开发介绍
软件开发大一学什么
网络安全风险隐患排查总结报告
域管理与文件服务器
怎么建立网络安全管理机制
小红书是如何进行数据库营销的
上传图片到服务器
数据库的表段名