⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bomb.cpp

📁 坦克大战的源代码~做的很好~很适合研究~~不错~
💻 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 + -