📄 spirit.cpp
字号:
#include "stdafx.h"
#include "Spirit.h"
#include "define.h"
///////////////////////////////////////////////////////////////////////////////////////////////////
CSpirit::CSpirit()
{
m_nDyingPage=30;
}
CSpirit::CSpirit(int nSourceX,int nSourceY,int nWidth,int nHeight,int nX,int nY,bool bActive,bool bAlive,int nPace)
{
m_nWidth=nWidth;
m_nHeight=nHeight;
m_rcSource.left=nSourceX;
m_rcSource.top=nSourceY;
m_rcSource.right=m_rcSource.left+m_nWidth-1;
m_rcSource.bottom=m_rcSource.top+m_nHeight-1;
m_nX=nX;
m_nY=nY;
m_nPace=nPace;
m_bActive=bActive;
m_bAlive=bAlive;
m_nDyingPage=30;
}
////////////////////////////////////////////////////////////////////////////////////////////////////
bool CSpirit::Collison(CSpirit spirit)
{
int nStrictRangeX=8,nStrictRangeY=8; //判断范围严格程度,(象素);因为一幅图不可能画满精灵,所以缩小一点范围是合理的;
switch(m_nWidth+spirit.m_nWidth)
{
case SPIRIT_WIDTH+SPIRIT_WIDTH:nStrictRangeX=15;break;
case SPIRIT_WIDTH+SPIRIT_WIDTH_2://nStrictRangeX=11;break;
case SPIRIT_WIDTH+SPIRIT_WIDTH_4:nStrictRangeX=11;break;
case SPIRIT_WIDTH+SPIRIT_WIDTH_8:nStrictRangeX=11;break;
case SPIRIT_WIDTH_2+SPIRIT_WIDTH_2:nStrictRangeX=8;break;
case SPIRIT_WIDTH_2+SPIRIT_WIDTH_4:nStrictRangeX=6;break;
case SPIRIT_WIDTH_4+SPIRIT_WIDTH_4:nStrictRangeX=4;break;
}
switch(m_nHeight+spirit.m_nHeight)
{
case SPIRIT_HEIGHT+SPIRIT_HEIGHT:nStrictRangeY=15;break;
case SPIRIT_HEIGHT+SPIRIT_HEIGHT_2:nStrictRangeX=11;break;
case SPIRIT_HEIGHT+SPIRIT_HEIGHT_4:nStrictRangeY=11;break;
case SPIRIT_HEIGHT+SPIRIT_HEIGHT_8:nStrictRangeY=10;break;
case SPIRIT_HEIGHT_2+SPIRIT_HEIGHT_2:nStrictRangeY=8;break;
case SPIRIT_HEIGHT_2+SPIRIT_HEIGHT_4:nStrictRangeY=6;break;
case SPIRIT_HEIGHT_4+SPIRIT_HEIGHT_4:nStrictRangeY=4;break;
}
if(m_bAlive&&spirit.m_bAlive)//对活着的的精灵撞击判断才有意义;
if((m_nY>-m_nHeight/2)&&(m_nY<SCREEN_HEIGHT-m_nHeight/2)&&(m_nX>-m_nWidth/2)&&(m_nX<SCREEN_WIDTH-m_nWidth/2))
if((m_nX+m_nWidth-nStrictRangeX>spirit.m_nX)
&&(m_nX+nStrictRangeX<spirit.m_nX+spirit.m_nWidth)
&&(m_nY+m_nHeight-nStrictRangeY>spirit.m_nY)
&&(m_nY+nStrictRangeY<spirit.m_nY+spirit.m_nHeight))
return true;
return false;
}
////////////////////////////////////////////////////////////////////////////////////////////////////
void CSpirit::DyingTrace(int nSpiritID)
{
if(m_bActive&&(!m_bAlive))
{
m_nY++;
switch(nSpiritID)
{
case 1:m_rcSource.top=START_Y+SCREEN_HEIGHT+SPIRIT_HEIGHT*3;//m_nHeight+1;
m_rcSource.bottom=m_rcSource.top+m_nHeight-1;
m_rcSource.left=START_X+SPIRIT_WIDTH*((30-m_nDyingPage)/3);
m_rcSource.right=m_rcSource.left+m_nWidth-1;
break;
case 2:break;
}
}
m_nDyingPage--;
if(m_nDyingPage==0)
{
m_bAlive=false;
m_bActive=false;
}
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -