📄 saintfighter.cpp
字号:
#include "stdafx.h"
#include "define.h"
#include "Spirit.h"
#include "SaintFighter.h"
////////////////////////////////////////////////////////////////////////
//Cbackground:
////////////////////////////////////////////////////////////////////////
CBackground::CBackground()
{
m_bActive=true;
m_bAtPalace=false;
m_nLoopTime=1;//循环使用楼梯地图5次;
m_nPace=1;
m_nHeight=SCREEN_HEIGHT;
m_nWidth=SCREEN_WIDTH;
m_nX=0;//START_X;
m_nY=0;//START_Y;
m_nX2=0;//START_X;
m_nY2=0-SCREEN_HEIGHT;//START_Y;
m_rcSource.top=START_Y;
m_rcSource.bottom=m_rcSource.top+m_nHeight;
m_rcSource.left=START_X;
m_rcSource.right=m_rcSource.left+m_nWidth;
m_rcSource2.top=START_Y-SCREEN_HEIGHT;
m_rcSource2.bottom=m_rcSource2.top+m_nHeight;
m_rcSource2.left=START_X;
m_rcSource2.right=m_rcSource2.left+m_nWidth;
}
//////////////////////////////////////////////////////////////////////////////////////////
void CBackground::Trace(long unsigned int luTime,CPalaceGate PalaceGate)
{
if(m_bActive)
{
if(m_nLoopTime>0)
{
if(m_nY<SCREEN_HEIGHT)m_nY+=m_nPace;
else
{
m_nY=0-SCREEN_HEIGHT;
}
if(m_nY2<SCREEN_HEIGHT)m_nY2+=m_nPace;
else
{
m_nY2=0-SCREEN_HEIGHT;
m_nLoopTime--;
}
}
else //最后一个行走循环了:
{ m_nY+=m_nPace;
m_nY2+=m_nPace;
if(m_nY2>=0)//进门
{
m_bAtPalace=true;
}
if(m_nY2>=SCREEN_HEIGHT)//完全进门
{
m_bActive=false;
}
}
}
return;
}
/////////////////////////////////////////////////////////////////////////////////
//
bool CBackground::Show(CDD* pDD)
{
if(!m_bActive)return true;
if(!pDD->BlitSourceToBack (m_nX,
m_nY,
m_rcSource,
DDBLTFAST_NOCOLORKEY))return false;
if(!pDD->BlitSourceToBack( m_nX2,
m_nY2,
m_rcSource2,
DDBLTFAST_NOCOLORKEY))return false;
return true;
}
/////////////////////////////////////////////////////////////////////////////////
//CPalaceGate:
/////////////////////////////////////////////////////////////////////////////////
CPalaceGate::CPalaceGate()
{
m_bActive=false;
m_nPace=1;
m_nHeight=SPIRIT_HEIGHT;//SCREEN_HEIGHT/2;
m_nWidth=SPIRIT_WIDTH_2;//SCREEN_WIDTH/2;
m_nXGate=0;
m_nYGate=0-SCREEN_HEIGHT;
m_rcGate.top=0;//
m_rcGate.bottom=m_rcGate.top+SCREEN_HEIGHT;
m_rcGate.left=0;//
m_rcGate.right=m_rcGate.left+SCREEN_WIDTH;
m_rcSource.top=2240;
m_rcSource.bottom=m_rcSource.top+m_nHeight-1;
m_rcSource.left=START_X+SPIRIT_WIDTH*9;
m_rcSource.right=m_rcSource.left+m_nWidth-1;
m_nX=(SCREEN_WIDTH-m_nWidth)/2; //START_X;
m_nY=(SCREEN_HEIGHT-m_nHeight)/2; //START_Y;
m_rcDestination.top=m_nY;
m_rcDestination.bottom=m_rcDestination.top+m_nHeight-1;
m_rcDestination.left=m_nX;
m_rcDestination.right=m_rcDestination.left+m_nWidth-1;
}
//////////////////////////////////////////////////////////////////////////////////////
void CPalaceGate::Trace(unsigned long luTime,CBackground Background)
{
if(!Background.m_bAtPalace)return;
else m_bActive=true;
int dx=1,//m_nX/8,
dy=1;//m_nY/8;
if(m_nYGate<0)
{
m_nYGate+=m_nPace;
return;
}
if(m_bActive&&m_nX>0)
{
m_nHeight+=dx<<1; //m_nX/8;
m_nWidth+=dy<<1; //m_nY/8;
if(m_nX>0)m_nX-=dx; //m_nX/8;
if(m_nY>0)m_nY-=dy; //m_nY/8;
m_rcDestination.top=m_nY;
m_rcDestination.bottom=m_rcDestination.top+m_nHeight-1;
m_rcDestination.left=m_nX;
m_rcDestination.right=m_rcDestination.left+m_nWidth-1;
}
return;
}
/////////////////////////////////////////////////////////////////////////////////
//
bool CPalaceGate::Show(CDD* pDD)
{
if(!m_bActive)return true;
if(!pDD->BlitSourceToBack (m_nXGate,
m_nYGate,
m_rcGate,
DDBLTFAST_NOCOLORKEY))return false;
if(m_nYGate>=0)
if(!pDD->StretchBlitSourceToBack(m_rcDestination,
m_rcSource,
//DDBLT_NOCOLORKEY
NULL))return false;
return true;
}
/////////////////////////////////////////////////////////////////////////////////
//CCosmos
/////////////////////////////////////////////////////////////////////////////////
CCosmos::CCosmos()
{
m_bActive=false;
m_bAlive=false;
}
//////////////////////////////////////////////////////////////////////////
void CCosmos::Activate(int nSrcLeft,int nSrcTop,int nY)
{
m_bActive=true;
m_bAlive=true;
m_nHeight=SPIRIT_HEIGHT_4;
m_rcSource.top=nSrcTop;
m_rcSource.bottom=m_rcSource.top+m_nHeight;
m_rcSource.left=nSrcLeft;
m_rcSource.right=m_rcSource.left+20;
m_nX=10;
m_nY=nY;
return;
}
//////////////////////////////////////////////////////////////////////////
void CCosmos::Trace(CSpirit spirit)
{
m_nWidth=spirit.m_nCosmos/15+20;
if(spirit.m_bAlive)
{
//if(m_nX==10)m_nX=11;
//else m_nX=10;
m_rcSource.right=m_rcSource.left+20+m_nWidth;
}
else
{
m_bAlive=false;
m_bActive=false;
}
return;
}
//////////////////////////////////////////////////////////////////////////
//CStone
//////////////////////////////////////////////////////////////////////////
CStone::CStone()
{
m_bActive=false;
m_bAlive=false;
m_nPace=1;
m_nCosmos=37;
m_nHeight=SPIRIT_HEIGHT;
m_nWidth=SPIRIT_WIDTH;
m_rcSource.top=START_Y+SCREEN_HEIGHT+SPIRIT_HEIGHT;//m_nHeight+1;
m_rcSource.bottom=m_rcSource.top+m_nHeight-1;
m_rcSource.left=START_X+SPIRIT_WIDTH*2;
m_rcSource.right=m_rcSource.left+m_nWidth-1;
m_nY=-m_nHeight;
}
////////////////////////////////////////////////////////////////////////////////
void CStone::Trace(int i)
{
if(m_bActive&&m_bAlive)
{
m_nX=SCREEN_WIDTH/MAX_STONE_COLUMN*i;
if(i%2==0)m_nPace=2;
else m_nPace=3;
m_nY+=m_nPace;
if(m_nY>=SCREEN_HEIGHT)//自然死亡了;
{
//m_bAlive=false;
//m_bActive=false;
m_nY=-m_nHeight;
}
}
return;
}
////////////////////////////////////////////////////////////////////////////////////
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -