回复 4楼 吹水佬
#include<graphics.h>
#include<conio.h>
#include<time.h>
#include<stdio.h>
#include <windows.h>
#define NUM 13
//烟花弹的结构体
struct JET
{
int x, y;
//发射的位置
int hx, hy;//最高点
int height;//烟花高度
bool shoot;//是否发射
DWORD
t1, t2, dt;//发射速度
IMAGE img[2];//储存一亮一暗的图片
byte
n : 1;//图片的下标
}Jet[NUM];
//包含库文件
#pragma
comment(lib,"winmm.lib")//播放音乐
//全局函数的声明
void Welcome();
//欢迎界面
void Load_Image();
//加载图片
void wp(int i);
//初始化
void Chose(DWORD& t1);//筛选烟花
void Shoot_Fire();
//发射函数
//主函数
int main()
{
initgraph(1200, 800);//初始化一个图形界面
srand(unsigned int(time(NULL)));
//随机因子
Welcome();
DWORD t1 = timeGetTime();//筛选烟花
for (int i = 0; i < NUM; i++)
{
wp(i);
}
Load_Image();
BeginBatchDraw();
//开始批量绘图
while (!kbhit())
{
Sleep(100);
Chose(t1);
Shoot_Fire();
FlushBatchDraw();
}
closegraph();
return 0;
}
//欢迎界面
void Welcome()
{//播放背景音乐
mciSendString("open ./fire/80000.mp3 alias 80000", 0, 0, 0);//获取音乐的文件的路径
mciSendString("play 80000 repeat", 0, 0, 0);
//文字的输出
settextstyle(50, 0, "楷体");//设置字体风格
setcolor(GREEN);
//设置字体颜色
outtextxy(480, 100, "表白");//在指定坐标输出文字
outtextxy(440, 150, "I LOVE
YOU");
settextstyle(25, 0, "楷体");
getch();
cleardevice();
outtextxy(400, 250, "你不知道你的影子多么调皮,");
outtextxy(400, 300, "总在我的眼前晃动,");
outtextxy(400, 350, "让我不能有一刻安宁。");
outtextxy(400, 400, "坏男孩从早上睁开朦胧眼睛的那一刻起");
outtextxy(400, 450, "到枕着你的名字入眠进入梦乡,");
outtextxy(400, 500, "你的影子一直陪着我");
outtextxy(400, 550, "是你一直都是");
getch();
}
//思路:1,加载图片
2,初始化
3.循环并改变坐标
4.逻辑判断
//加载图片
void Load_Image()
{
//加载烟雾弹
IMAGE sm;
loadimage(&sm, "./fire/shoot.jpg", 200, 50);
for (int i = 0; i<13; i++)
{
SetWorkingImage(&sm);
//设置回绘窗口
int n = rand() % 5;
getimage(&Jet[i].img[0], n * 20, 0, 20, 50);
//暗的图片
getimage(&Jet[i].img[1], (n + 5) * 20, 0, 20, 50);//亮的图片
}
SetWorkingImage();
//设置回绘窗口
}
//初始化
void wp(int i)
{
//初始化烟花弹
Jet[i].x = -240;
Jet[i].y = -240;
Jet[i].hx = -240;
Jet[i].hy = -240;
Jet[i].height = 0;
Jet[i].t1 = timeGetTime();
Jet[i].dt = rand() % 10;
Jet[i].n = 0;
Jet[i].shoot = false;
}
//筛选烟花
void Chose(DWORD& t1)
{
DWORD t2 = timeGetTime();
if (t2 - t1 > 100)
{
int n = rand() % 20;
if (n < 13 && Jet[n].shoot==false)
{
Jet[n].x = rand() % 1200;
Jet[n].y = rand() % 100 + 600;
Jet[n].hx = Jet[n].x;
Jet[n].hy = rand() % 400;
Jet[n].hy = Jet[n].y - Jet[n].hy;
putimage(Jet[n].x, Jet[n].y, &Jet[n].img[Jet[n].n], SRCINVERT);
}
t1 = t2;
}
}
//发射函数
void Shoot_Fire()
{
for (int i = 0; i < 13; i++)
{
Jet[i]. t2 = timeGetTime();
if (Jet[i].t2 - Jet[i].t1>Jet[i].dt);
{
//烟花弹上升
putimage(Jet[i].x, Jet[i].y, &Jet[i].img[Jet[i].n], SRCINVERT);
if (Jet[i].y > Jet[i].hy)
{
Jet[i].n++;
Jet[i].y -= 5;
}
putimage(Jet[i].x, Jet[i].y, &Jet[i].img[Jet[i].n], SRCINVERT);
}
}
}
还是这个代码,我想让它能够自动切换界面