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

📄 binghe.cpp

📁 一个完整的2D滚屏游戏示例
💻 CPP
字号:
#include "stdafx.h"
#include "define.h"
#include "dinput.h" 
#include "BingHe.h"
//////////////////////////////////////////////////////////////////////////////////////////////////////
//CbingHe:
//////////////////////////////////////////////////////////////////////////////////////////////////////
CBingHe::CBingHe()
{
m_bActive=true;
m_bAlive=true;
m_nCosmos=700;

m_bMoving=false;
m_bFiring=false;

m_nX=SCREEN_WIDTH/2;
m_nY=SCREEN_HEIGHT-SPIRIT_HEIGHT*2;

m_nWidth=SPIRIT_WIDTH_2;
m_nHeight=SPIRIT_HEIGHT;

m_rcSource.left=START_X+SPIRIT_WIDTH;
m_rcSource.right=m_rcSource.left+m_nWidth-1;
m_rcSource.top=START_Y+SCREEN_HEIGHT+SPIRIT_HEIGHT*2;
m_rcSource.bottom=m_rcSource.top+m_nHeight-1;

}


void CBingHe::Trace(DWORD dwMouse,POINT MousePoint,bool key[256],long unsigned int luTime)
{
//m_bFiring=false;
bool bLeft;

if(luTime%16<8)bLeft=true;
else bLeft=false;
	
m_bMoving=false;

	if(m_bAlive)
	{
		switch(dwMouse)
		{
		case    DI_MOUSE_MOVE_X:m_bMoving=true;break;
		case    DI_MOUSE_MOVE_Y:m_bMoving=true;break;
		case DI_MOUSE_LEFT_DOWN:m_bFiring=true;break;
		case   DI_MOUSE_LEFT_UP:m_bFiring=false;break;
		}
		//if(key[DIK_LEFT])m_nX--;

		if(m_bMoving)
		{
		m_nX+=(MousePoint.x/3);
		m_nY+=(MousePoint.y/3);
		if(m_nX<-m_nWidth/2)m_nX=-m_nWidth/2; 
		if((m_nX+m_nWidth/2)>SCREEN_WIDTH)m_nX=SCREEN_WIDTH-m_nWidth/2; 
		if(m_nY<0)m_nY=0; 
		if((m_nY+m_nHeight/2)>SCREEN_HEIGHT)m_nY=SCREEN_HEIGHT-m_nHeight/2;
		}

		if(m_bFiring)
		{
			if(bLeft)
			m_rcSource.left =START_X+SPIRIT_WIDTH;
			else
			m_rcSource.left =START_X+SPIRIT_WIDTH+SPIRIT_WIDTH_2;
		}
		else
		{
			if(bLeft)
			m_rcSource.left =START_X+SPIRIT_WIDTH+SPIRIT_WIDTH_2*2;
			else
			m_rcSource.left =START_X+SPIRIT_WIDTH+SPIRIT_WIDTH_2*3;
		}
	
	m_rcSource.right=m_rcSource.left+m_nWidth-1;
	}	
return;
} 

/////////////////////////////////////////////////////////////////////////
//CFire:
/////////////////////////////////////////////////////////////////////////
CFireBH::CFireBH()
{
m_bActive=false;
m_bAlive=false;
m_nPace=11;

m_nCosmos=1;
m_nHeight=SPIRIT_HEIGHT_4;
m_nWidth=SPIRIT_WIDTH_4;

m_rcSource.top   =START_Y+SCREEN_HEIGHT+SPIRIT_HEIGHT*2;
m_rcSource.bottom=m_rcSource.top+m_nHeight-1;
m_rcSource.left  =START_X;
m_rcSource.right =m_rcSource.left+m_nWidth-1;
}

/////////////////////////////////////////////////////////////////////////////////
void CFireBH::Activate(CSaintFighter saint)
{
	if(saint.m_bFiring&&(!m_bActive))//子弹初始位置;
	{
	m_nX=saint.m_nX+(saint.m_nWidth-m_nWidth)/2;
    m_nY=saint.m_nY-m_nHeight+m_nPace;
	m_bActive=true;
	m_bAlive=true;
	}
return;
}

/////////////////////////////////////////////////////////////////////////////////
void CFireBH::Trace()
{
	switch(m_nPace)
	{
	case 11:m_nPace=14;break;
	case 14:m_nPace=17;break;
	case 17:m_nPace=11;break;
	}
	
	if(m_rcSource.left==START_X)m_rcSource.left=START_X+SPIRIT_WIDTH_4;
    else m_rcSource.left  =START_X;
	m_rcSource.right =m_rcSource.left+m_nWidth-1;
    
	if(m_bActive)
	{
	m_nY-=m_nPace;
		if(m_nY<=-m_nHeight)
		{
		m_bActive=false;
		m_bAlive=false;
		}
	}

return;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -