女朋友看完感动哭了…,渣男勿用!!! 话不多说,直接附上代码。 程序界面: 界面1 界面2 界面3
#include
#include
#include
#include
#include
#include
#pragma comment(lib,"winmm.lib")
#define NUM 10 //烟花弹个数,烟花
#define PI 3.1415925
//烟花弹
struct jet
{
int x, y; //烟花弹坐标
int hx, hy; //烟花弹最高点坐标
bool shoot; //烟花弹是否处于发射状态
DWORD t1, t2, dt; //发射时间 引爆时间 间隔时间
IMAGE img[2]; //2张图片 一明一暗 01下标
byte n : 1; //C结构体 位段 //n 变量 1个位 0,1 n++ 0,1,0,1
}jet[NUM]; //烟花弹个数
//烟花
struct Fire
{
int x, y; //烟花的坐标
int r; //烟花的半径
int max_r; //烟花的最大半径
int cen_x, cen_y; //中心距左上角的距离
int width, height; //长宽
int xy[240][240]; //重要,像素,矩阵
bool draw; //画出
bool show; //显示
DWORD t1, t2, dt; //发射时间 引爆时间 间隔时间
}fire[NUM];
void FireInit(int i)
{
//初始化烟花弹
jet[i].t1 = GetTickCount(); //GetTickCount()返回从操作系统启动到当前所经过的毫秒数。使用前包含windows.h。
jet[i].shoot = false; //未发射
jet[i].dt = 10; //上升时间
jet[i].n = 0; //初始化烟花
fire[i].show = false; //未引爆
fire[i].r = 0;
fire[i].dt = 5; //上升时间
fire[i].t1 = GetTickCount();
fire[i].max_r = rand() % 50 + 100; //100-149
fire[i].cen_x = rand() % 30 + 80; //中心距左上角的距离
fire[i].cen_y = rand() % 30 + 80; //
fire[i].width = 240; //宽
fire[i].height = 240; //长
}
void Load()
{
//加载烟花弹
IMAGE jetimg;
int i=0;
loadimage(&jetimg, "shoot.jpg", 200, 50);
SetWorkingImage(&jetimg);
for (i = 0; i 16);
// 烟花像素点在窗口上的坐标
int xx = (int)(fire[i].x + fire[i].r * cos(a));
int yy = (int)(fire[i].y - fire[i].r * sin(a));
//较暗的像素点不输出、防止越界
if (r > 0x20 && g > 0x20 && b > 0x20 && xx > 0 && xx 0 && yy |