📄 enemy.cpp
字号:
#include <math.h>
#include "stdafx.h"
#include "define.h"
#include "Spirit.h"
#include "Enemy.h"
////////////////////////////////////////////////////////////////////////////////////
//CMOFire
////////////////////////////////////////////////////////////////////////////////////
CMOFire::CMOFire()
{
m_bActive=false;
m_bAlive=false;
m_nPace=8;
m_nAngle=45;
m_nFireNum=3;
m_nCosmos=7777;
m_nHeight=SPIRIT_HEIGHT_4;
m_nWidth=SPIRIT_WIDTH_4;
m_rcSource.top =START_Y+SCREEN_HEIGHT+SPIRIT_HEIGHT*2+SPIRIT_HEIGHT_4;
m_rcSource.bottom=m_rcSource.top+m_nHeight-1;
m_rcSource.left =START_X+SPIRIT_WIDTH_4;
m_rcSource.right =m_rcSource.left+m_nWidth-1;
}
////////////////////////////////////////////////////////////////////////////////////
void CMOFire::Initialize(int nAngle,int nFireNum,RECT rect,int nCosmos)
{
m_nAngle=nAngle;
m_nFireNum=nFireNum;
m_nCosmos=nCosmos;
m_rcSource.top =rect.top;
m_rcSource.bottom=rect.bottom;
m_rcSource.left =rect.left;
m_rcSource.right =rect.right;
m_nHeight=rect.bottom-rect.top+1;
m_nWidth=rect.right-rect.left+1;
return;
}
///////////////////////////////////////////////////////////////////////////////////////
void CMOFire::Activate(CSaintFighter saint)
{
if(saint.m_bFiring&&saint.m_bAlive&&(!m_bActive))//子弹初始位置;
{
m_nX=saint.m_nX+(saint.m_nWidth-m_nWidth)/2;
m_nY=saint.m_nY+saint.m_nHeight-m_nHeight-m_nPace;
m_bActive=true;
m_bAlive=true;
}
return;
}
//////////////////////////////////////////////////////////////////////////////////////
void CMOFire::Trace(int i)
{
int nAngle;
if(m_bActive&&m_bAlive)
{
nAngle=m_nAngle*(i-m_nFireNum/2);
m_nX+=(int)(m_nPace*sin(RADIAN(nAngle)));
m_nY+=(int)(m_nPace*cos(RADIAN(nAngle)));
if(m_nY<-m_nHeight||m_nY>SCREEN_HEIGHT||m_nX<-m_nWidth||m_nX>SCREEN_WIDTH)
{
m_bActive=false;
m_bAlive=false;
}
}
return;
}
////////////////////////////////////////////////////////////////////////////////////
//CSmallSaint1
/////////////////////////////////////////////////////////////////////////////////////
CSmallSaint1::CSmallSaint1()
{
m_bActive=false;
m_bAlive=false;
m_nPace=5;
m_nCosmos=7;
m_nHeight=SPIRIT_HEIGHT;
m_nWidth=SPIRIT_WIDTH_2;
m_rcSource.top=START_Y+SCREEN_HEIGHT+SPIRIT_HEIGHT*5;//m_nHeight+1;
m_rcSource.bottom=m_rcSource.top+m_nHeight-1;
m_rcSource.left=START_X;
m_rcSource.right=m_rcSource.left+m_nWidth-1;
m_nX=-m_nWidth;
m_nY=m_nHeight;
}
///////////////////////////////////////////////////////////////////////////////////
void CSmallSaint1::Trace(int i)
{
if(m_bActive&&m_bAlive)
{
m_nX+=m_nPace;
m_nY+=m_nX/40;
if(m_nY>SCREEN_HEIGHT)//自然死亡了:
{
m_bAlive=false;
m_bActive=false;
}
}
//switch(i)
//{
//case 1:m_nX=SCREEN_WIDTH-m_nX;break;
//}
return;
}
////////////////////////////////////////////////////////////////////////////////////
//CSmallSaint2
/////////////////////////////////////////////////////////////////////////////////////
CSmallSaint2::CSmallSaint2()
{
m_bActive=false;
m_bAlive=false;
m_nPace=3;
m_nCosmos=7;
m_nHeight=SPIRIT_HEIGHT;
m_nWidth=SPIRIT_WIDTH_2;
m_rcSource.top=START_Y+SCREEN_HEIGHT+SPIRIT_HEIGHT*5;//m_nHeight+1;
m_rcSource.bottom=m_rcSource.top+m_nHeight-1;
m_rcSource.left=START_X;
m_rcSource.right=m_rcSource.left+m_nWidth-1;
m_nX=SCREEN_WIDTH+m_nWidth;
m_nY=m_nHeight;
}
///////////////////////////////////////////////////////////////////////////////////
void CSmallSaint2::Trace(int i)
{
if(m_bActive&&m_bAlive)
{
m_nX-=m_nPace;
m_nY+=(SCREEN_WIDTH-m_nX)/30;
if(m_nY>SCREEN_HEIGHT)//自然死亡了:
{
m_bAlive=false;
m_bActive=false;
}
}
return;
}
//////////////////////////////////////////////////////////////////////////////////
//CsmallSaint3
//////////////////////////////////////////////////////////////////////////////////
CSmallSaint3::CSmallSaint3()
{
m_bActive=false;
m_bAlive=false;
m_bLeft=false;
m_bFiring=false;
m_nPace=6;
m_nCosmos=17;
m_nHeight=SPIRIT_HEIGHT;
m_nWidth=SPIRIT_WIDTH_2;
m_rcSource.top=START_Y+SCREEN_HEIGHT+SPIRIT_HEIGHT*5;//m_nHeight+1;
m_rcSource.bottom=m_rcSource.top+m_nHeight-1;
m_rcSource.left=START_X;
m_rcSource.right=m_rcSource.left+m_nWidth-1;
m_nX=-m_nWidth;
m_nY=-m_nHeight;
}
////////////////////////////////////////////////////////////////////////////////
void CSmallSaint3::Trace(int i,long unsigned int luTime)
{
if(m_bActive&&m_bAlive)
{
if(m_bFiring==true)m_bFiring=false;//只发一次子弹;
if((luTime+i*8-20)%100==0)m_bFiring=true;
if(m_bLeft)
{
m_nX-=m_nPace;
if(m_nX<=0)m_bLeft=false;
if(m_nX==500)m_bFiring=true;
}
else
{
m_nX+=m_nPace;
if(m_nX>=SCREEN_WIDTH)m_bLeft=true;
if(m_nX==100)m_bFiring=true;
}
m_nY+=m_nPace/5;
if(m_nY>SCREEN_HEIGHT)//自然死亡了:
{
m_bAlive=false;
m_bActive=false;
}
}
return;
}
//////////////////////////////////////////////////////////////////////////////////
//CsmallSaint4
//////////////////////////////////////////////////////////////////////////////////
CSmallSaint4::CSmallSaint4()
{
m_bActive=false;
m_bAlive=false;
m_bDown=true;
m_bFiring=false;
m_nPace=1;
m_nCosmos=277;
m_nHeight=SPIRIT_HEIGHT;
m_nWidth=SPIRIT_WIDTH_2;
m_rcSource.top=START_Y+SCREEN_HEIGHT+SPIRIT_HEIGHT*5;//m_nHeight+1;
m_rcSource.bottom=m_rcSource.top+m_nHeight-1;
m_rcSource.left=START_X;
m_rcSource.right=m_rcSource.left+m_nWidth-1;
m_nX=SCREEN_WIDTH/2+80;
m_nY=-m_nHeight;
}
/////////////////////////////////////////////////////////////////////////////////
void CSmallSaint4::Trace(int i,long unsigned int luTime)
{
if(m_bActive&&m_bAlive)
{
if(m_bFiring==true)m_bFiring=false;//只发一次子弹;
if((luTime)%100==0)m_bFiring=true;
if(m_bDown)
{
m_nY+=m_nPace;
if(m_nY>=SCREEN_HEIGHT/2-m_nHeight)m_bDown=false;
//if(m_nX==500)m_bFiring=true;
}
else
{
m_nY-=m_nPace;
if(m_nY<=SCREEN_HEIGHT/4)m_bDown=true;
//if(m_nY==100)m_bFiring=true;
}
}
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -