如何用c语言编写炫酷烟花程序,好看的烟花程序,用turboc执行一下吧!!!

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

#include 

#include 

#include 

#include 

#include 

#include 

#include 

#define  PI 3.14159

void moon()

{

int x=50,y=50,n=30;

setcolor(YELLOW);

setfillstyle(1,YELLOW);

ellipse(x,y,0,360,n,n);

ellipse(x+n/2,y,90,270,n,n);

floodfill(x-n+3,y,YELLOW);

setcolor(BLACK);

circle(x,y,n);

circle(x+n/2,y,n);

}

void star(int x, int y)

{

int i,a;

int n=5;

int x1[5],y1[5],x2[5],y2[5];

setcolor(YELLOW);

for (i=0;i<5;i++)

{

x1[i]=x+n*cos(i*72*PI/180);

y1[i]=y+n*sin(i*72*PI/180);

x2[i]=x+n/2*cos(i*72*PI/180+PI/5);

y2[i]=y+n/2*sin(i*72*PI/180+PI/5);

}

for(i=0;i<5;i++)

{

a=i+1;

if(a>4) a=0;

line(x1[i],y1[i],x2[i],y2[i]);

line(x2[i],y2[i],x1[a],y1[a]);

}

}

void drawstar()

{

int a[]={70,250,190,400,150};

int b[]={43,27,38,79,90},i;

setfillstyle(1,14);

for(i=0;i<5;i++)

{

star(a[i],b[i]);

floodfill(a[i],b[i],YELLOW);

}

}

void starflower()

{

int i=0,j,n=60,n1=2;

int x=200,y=200,size=100;

int cover=0;

int delay1=5000;

int wid,hei;

int px,py;

int color=9;

while(!kbhit())

{

if(i

{

for(j=0;j

{

px=x+i*cos(j*360/n*PI/180);

py=y+i*sin(j*360/n*PI/180);

putpixel(px,py,rand()%16);

putpixel(px-1,py,color);

putpixel(px,py+1,color);

putpixel(px+1,py-1,YELLOW);

putpixel(px,py-1,YELLOW);

putpixel(px+1,py,RED);

putpixel(px+1,py+1,RED);

}

}

if(i>size && cover

{

setcolor(BLACK);

circle(x,y,cover++);

delay1=1000;

}

if(cover==size)

{

i=0;

x=50+rand()%550;

y=rand()%400;

cover=0;

color=rand()%16;

size=50+rand()%250;

delay1=10000;

clearviewport();

drawstar();

moon();

}

i+=n1;

delay(delay1);

}

}

main()

{

int i,j,k;

int gdriver = DETECT, gmode;

registerbgidriver(EGAVGA_driver);

initgraph(&gdriver,&gmode,"");

drawstar();

moon();

starflower();

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 以下是一个使用C语言编写的放烟花程序的基本思路: 1. 导入必要的头文件和库,如stdio.h、stdlib.h和windows.h。 2. 创建一个窗口并设置其大小和标题。 3. 在窗口中绘制一个黑色的矩形,表示夜空。 4. 定义一个火花结构体,包括位置、速度和颜色等属性。 5. 在窗口中随机生成一定数量的火花,并将它们存储在一个火花数组中。 6. 在窗口中循环绘制火花,每次更新火花的位置和速度,并根据其颜色绘制一个圆形或其他形状的火花。 7. 当火花到达窗口的顶部或速度减慢到一定程度时,将其从数组中移除并生成新的火花。 8. 循环绘制火花直到程序结束。 需要注意的是,放烟花程序涉及到图形和动画等较为复杂的操作,需要使用相应的图形库和算法来实现。同时,程序中涉及到的颜色和形状等参数也需要进行合理的设计和调整,以实现更好的效果。 ### 回答2: 编写一个放烟花的 C 语言程序可以通过调用图形库和计时函数实现。下面是一个简单的示例: ``` #include <graphics.h> #include <stdio.h> #include <stdlib.h> #include <time.h> // 定义屏幕宽高 #define WIDTH 640 #define HEIGHT 480 // 定义烟花粒子的数量 #define NUM_PARTICLES 100 // 定义每个粒子的最大速度 #define MAX_VELOCITY 5 // 定义烟花的位置和颜色 int fireworkX, fireworkY; int fireworkColor; // 定义粒子结构体 typedef struct { int x, y; int vx, vy; int color; } Particle; // 初始化粒子 void initParticle(Particle *particle) { particle->x = fireworkX; particle->y = fireworkY; particle->vx = rand() % (2 * MAX_VELOCITY) - MAX_VELOCITY; particle->vy = rand() % (2 * MAX_VELOCITY) - MAX_VELOCITY; particle->color = fireworkColor; } int main() { // 定义屏幕图形模式 int gd = DETECT, gm; // 初始化图形模式 initgraph(&gd, &gm, ""); // 设置随机种子 srand(time(NULL)); // 循环绘制多个烟花 while (1) { // 生成烟花的随机位置和颜色 fireworkX = rand() % WIDTH; fireworkY = rand() % HEIGHT; fireworkColor = rand() % (getmaxcolor() + 1); // 循环绘制粒子 Particle particles[NUM_PARTICLES]; for (int i = 0; i < NUM_PARTICLES; i++) { initParticle(&particles[i]); } // 动画效果:粒子向外扩散,并逐渐消失 while (!kbhit()) { // 当点击键盘时退出循环 for (int i = 0; i < NUM_PARTICLES; i++) { Particle *particle = &particles[i]; setcolor(particle->color); putpixel(particle->x, particle->y, particle->color); particle->x += particle->vx; particle->y += particle->vy; particle->vy += 1; // 重力效果 if (particle->y >= HEIGHT) { particle->color = BLACK; putpixel(particle->x, particle->y, BLACK); } } delay(10); // 控制帧率 cleardevice(); } // 当点击键盘时退出程序 if (getch()) break; } // 关闭图形模式 closegraph(); return 0; } ``` 这个程序使用了图形库和计时函数来实现烟花的粒子效果。程序流程如下: 1. 引入相关头文件,定义屏幕宽高、粒子数量、最大速度和粒子结构体。 2. 初始化粒子函数 initParticle,用于初始化每个粒子的位置、速度和颜色。 3. 定义主函数 main,初始化图形模式和随机种子。 4. 进入循环,每次循环生成一个随机位置和颜色的烟花。 5. 循环绘制粒子,并实现动画效果:粒子向外扩散并逐渐消失。 6. 当点击键盘时退出循环,再次点击键盘时退出程序。 7. 关闭图形模式,结束程序。 请注意,这个示例程序使用的是 Turbo C 3.0 这样老旧的编译器和图形库,可能无法在现代编译环境中运行。如果需要在现代编译器中运行,请选择更适合的图形库和编译环境。 ### 回答3: 烟花程序的实现可以使用C语言的图形库,比如使用Windows下的graphics.h或者Linux下的SDL库。以下是一个简单的用C语言编写烟花程序的示例: 首先,要包含所使用的图形库的头文件,并初始化图形库: #include <stdio.h> #include <stdlib.h> #include <graphics.h> int main() { int gd = DETECT, gm; // 初始化图形驱动和图形模式 initgraph(&gd, &gm, ""); // 初始化图形库 // 定义烟花的位置和尺寸 int x = getmaxx() / 2; // 屏幕中心点的x坐标 int y = getmaxy() / 2; // 屏幕中心点的y坐标 int radius = 10; // 烟花初始半径 while (!kbhit()) // 直到按下键盘任意键退出程序 { // 清屏,防止烟花尾迹留在屏幕上 cleardevice(); // 绘制圆形烟花 setcolor(rand() % 15 + 1); // 随机选择颜色 circle(x, y, radius); radius += 5; // 每一帧,烟花半径增加 // 烟花到达一定尺寸后,重新设置位置和尺寸 if (radius >= 200) { x = rand() % getmaxx(); // 随机设置烟花x坐标 y = rand() % getmaxy(); // 随机设置烟花y坐标 radius = 10; } delay(50); // 延迟50毫秒,控制烟花的速度 } closegraph(); // 关闭图形库 return 0; } 以上代码使用了BGI(Borland Graphics Interface)图形库,在Windows下使用Turbo C/C++编译器可以直接编译运行。在Linux下可以使用SDL库来实现图形界面,相应的头文件和函数需要进行修改。 该程序在屏幕中心点循环绘制圆形烟花,并随机选择不同的颜色。随着半径的增加,烟花会逐渐变大,当烟花到达一定尺寸后,会重新设置位置和尺寸,继续绘制新的烟花。在按下键盘任意键后,程序会退出并关闭图形库。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值