📄 bomb.cpp
字号:
// Bomb.cpp: implementation of the CBomb class.
//爆炸类工程文件
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "Bomb.h"
#include<stdlib.h>
//#include "Sprite.h"
//#include "PlayMusic.h"
CBomb *bomb; //类指针
/*
//============外部变量====================
extern CSprite *MySprite;
extern CPlayMusic playmusic;
extern bool m_ShowStartScreen , m_ShowEndScreen;
*/
//粒子结构
struct SEED
{
bool dead; //死亡
POINT P; //位置
short MaxLife; //最大生命值
short ThisLife; //已生存的时间
short vx0,vy0; //初速度
int vxa,vya; //移动加速度
short color; //颜色标志
short kind; //粒子种类(粒子或碎片)
}SEEDS[100];
/**********构造函数*************
函数名:CBomb()
用途: 游戏开始前只初始化一次的
参数:
返回值:
其它:
********************************/
CBomb::CBomb()
{
maxlife=50;
m_n=100;
for(int i=0;i<m_n;i++)
{
kind[i]=0;
pxy[i].x=pxy[i].y=0;
bxy[i].x=bxy[i].y=0;
COLOR[i]=0;
}
m_alldead=true;
}
/**********析构函数*************
函数名:~CBomb()
用途:
参数:
返回值:
其它:
********************************/
CBomb::~CBomb()
{
}
/******************************************
函数名:Boom()
用途: 爆炸
参数: 离屏DC,爆炸中心点坐标,爆炸时间
返回值:爆炸结束返回 TRUE
其它:
*******************************************/
bool CBomb::Boom(POINT CENTER)
{
int x,y;
static t=0;
if(t<1000){t++;}
else{t=0;}
if(m_alldead){Init();m_alldead=false;}
for(i=0;i<m_n;i++)
{
if(SEEDS[i].ThisLife>=SEEDS[i].MaxLife)
{
SEEDS[i].dead=true;
m_n--;
if(m_n==0) //死光
{
m_alldead=true;
t=0;
return false;
}
else{continue;}
}
else
{
x=CENTER.x+(SEEDS[i].vxa*t);
y=CENTER.y+(SEEDS[i].vya*t);
SEEDS[i].ThisLife++;
SEEDS[i].color=rand() % 6;
if(SEEDS[i].color==0){COLOR[i]=0;}
if(SEEDS[i].color==1){COLOR[i]=1;}
if(SEEDS[i].color==2){COLOR[i]=2;}
if(SEEDS[i].color==3){COLOR[i]=3;}
if(SEEDS[i].color==4){COLOR[i]=4;}
if(SEEDS[i].color==5){COLOR[i]=5;}
if((SEEDS[i].vxa<=1 && SEEDS[i].vxa>=-1)||(SEEDS[i].vya<=1 && SEEDS[i].vya>=-1)) //是碎片
{
pxy[i].x=x;
pxy[i].y=y;
kind[i]=SEEDS[i].kind=1;
COLOR[i]=rand () % 4+6; //4种不同碎片
}
else //是粒子
{
bxy[i].x=x;
bxy[i].y=y;
kind[i]=SEEDS[i].kind=0;
COLOR[i]=3;
// SetPixelV(hDC,x,y,COLOR);
}
}/**/
}
return true;
}
/******************************************
函数名:Init()
用途: 爆炸初始化
参数: 无
返回值:无
其它:
*******************************************/
void CBomb::Init()
{
// m_t=0;
m_alldead=true;
m_playsound=true;
// srand(GetTickCount());
m_n=100;
for(i=0;i<m_n;i++)
{
SEEDS[i].kind=0; //
SEEDS[i].dead=true;
SEEDS[i].P.x=0; //位置
SEEDS[i].P.y=0;
SEEDS[i].ThisLife=0;
// SEEDS[i].MaxLife=rand() % 101+1;
SEEDS[i].MaxLife=maxlife;
SEEDS[i].vxa=rand()%31-15;
SEEDS[i].vya=rand()%31-15;
SEEDS[i].color=rand() % 8; //颜色标志
//if(SEEDS[i].MaxLife==1){SEEDS[i].color=1;}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -