新年快乐的烟花代码c语言
时间: 2024-12-28 17:15:14 浏览: 175
### C语言新年烟花效果实现代码示例
为了创建一个具有新年氛围的烟花效果程序,可以采用控制台图形库来简化绘图操作。下面展示了一个基于Windows平台下的C语言代码片段,该代码能够在命令行窗口内模拟出绚丽多彩的新年烟火表演。
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>
// 定义屏幕尺寸常量
#define WIDTH 80
#define HEIGHT 24
void gotoxy(int x, int y){
COORD coord;
coord.X = x;
coord.Y = y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}
int random_color(){
return rand()%16; // 返回0~15之间的整数作为颜色索引
}
void draw_firework(int posX, int posY){
char firework[]="*";
int color=random_color();
HANDLE hConsole = GetConsoleWindow();
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),color);
for (int i=-1;i<=1;i++)
for (int j=-1;j<=1;j++){
if ((posX+i>=0)&&(posY+j>=0)&&(posX+i<WIDTH)&&(posY+j<HEIGHT)){
gotoxy(posX+i,posY+j);
printf("%s",firework);
}
}
Sleep(100); // 延迟一段时间让烟花爆炸动画更自然
// 清除之前的烟花痕迹并重置默认属性
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),7);
for (int i=-1;i<=1;i++)
for (int j=-1;j<=1;j++){
if((posX+i>=0)&&(posY+j>=0)&&(posX+i<WIDTH)&&(posY+j<HEIGHT)){
gotoxy(posX+i,posY+j);
printf(" ");
}
}
}
int main(){
srand(time(NULL)); // 初始化随机种子
system("@cls||clear"); // 清屏指令兼容Linux/MacOS与Windows环境
while(1){ // 循环播放烟花直到手动终止程序
int fx=rand()%(WIDTH-3)+1,fy=rand()%(HEIGHT-3)+1;
draw_firework(fx,fy);
// 打印新年快乐消息位于屏幕中央位置
gotoxy(WIDTH/2-strlen("Happy New Year!")/2 , HEIGHT/2 );
printf("\n%s","Happy New Year!");
Sleep(rand()%1000+500); // 控制两次烟花之间的时间间隔
}
return 0;
}
```
此段代码通过`gotoxy()`函数定位光标至指定坐标处打印字符以形成烟花形状,并利用`SetConsoleTextAttribute()`改变文字的颜色达到视觉上的多样性[^2]。此外,还加入了简单的延时处理使得整个过程更加逼真流畅。值得注意的是,由于这里使用了一些特定于 Windows 的 API 函数(如 `GetConsoleWindow`, `SetConsoleTextAttribute`),因此这段代码仅适用于 Windows 平台上编译执行。
阅读全文