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

📄 game.cpp

📁 一个完整的2D滚屏游戏示例
💻 CPP
字号:
#include "stdafx.h"
#include "resource.h"
#include "define.h"
#include "game.h"
//////////////////////////////////////////////////////////////////////////////
//
bool CGame::Initialize(HWND hWnd,LPCSTR szBitmap,LPCSTR szSourceWaves[STAGE_MAX_NUM][DSOUND_MAX_NUM],int nSoundNum[STAGE_MAX_NUM],int nStageNum)
{
//record resources:
	if(nStageNum>STAGE_MAX_NUM)return false;
	for(int i=0;i<nStageNum;i++)
	{
	if(nSoundNum[i]>DSOUND_MAX_NUM)return false;
	for(int j=0;j<nSoundNum[i];j++)
	m_szSourceWaves[i][j]=szSourceWaves[i][j];
	}
	
//initialize the input engine:
if(!m_DI.Initialize(hWnd))
return false;

//initialize the graphic engine:
if(!m_DD.Initialize(hWnd,SCREEN_WIDTH,SCREEN_HEIGHT,COLOR_DEPTH,szBitmap,RGB(0,0,0),RGB(0,0,0)))
return false;

//initialize the sound engine:
//if(!
   m_DS.Initialize(hWnd,szSourceWaves[0],nSoundNum[0]);	
//   )
//return false;

//Initialize the game procedure parameters:
m_luTime=0;
m_bPaused=false;
m_nSpeed=10;

m_nScorePlayer1=0;
m_nScorePlayer2=0;

m_bBeginPage=true;
m_pBeginPage=new CBeginPage(&m_DD,szBitmap,&m_DI,&m_DS,m_szSourceWaves[0],m_nSoundNum[0]);

m_bStage1st=false;
m_pStage1st=NULL;
//m_bStage1st=true;
//m_pStage1st=new CStage1st(&m_DD,szBitmap,&m_DI);

m_bScorePage=false;
m_pScorePage=NULL;
return true;
}

//////////////////////////////////////////////////////////////////////////////
//
void CGame::Run(MSG msg)
{
//Direct input取得输入状态;
m_DI.UpDateInputState();

//调节游戏速度:
if(m_luTime%15==0)//减低灵敏度;
{
if(m_DI.m_bKeyDown[DIK_MINUS]&&m_nSpeed<16)m_nSpeed++;
if(m_DI.m_bKeyDown[DIK_EQUALS]&&m_nSpeed>5)m_nSpeed--;
}   

///////////////////////////////////////////////////////////////////////////////////////
	if(m_pBeginPage!=NULL)
	{
		m_pBeginPage->Run();
		m_pBeginPage->Show();
		m_pBeginPage->m_luTime++;
		//m_DS.Play(0);	
		
		switch(m_DI.m_dwMouse)
		{
		case    DI_MOUSE_MOVE_X:
		case    DI_MOUSE_MOVE_Y:break;
		case DI_MOUSE_LEFT_DOWN:break;
		case   DI_MOUSE_LEFT_UP:break;
		}
		
		if(m_DI.m_bKeyDown[DIK_RETURN]||m_DI.m_bKeyDown[DIK_SPACE])
		{
		delete m_pBeginPage;
		m_pBeginPage=NULL;
		m_nScorePlayer1=0;

		LPCSTR szWaves[DSOUND_MAX_NUM];
		szWaves[0]="main.wav";
		
		m_pStage1st=new CStage1st(&m_DD,(LPCSTR)IDB_SOURCE,&m_DI,&m_DS,m_szSourceWaves[1],m_nSoundNum[1]);
		m_pStage1st->SetScore1(m_nScorePlayer1);//初始化player1的分数;
		}

	return;
	}

	////////////////////////////////////////////////////////////////////////////////////////
	if(m_pStage1st!=NULL)
	{
		bool bRun=m_pStage1st->Run();
		m_pStage1st->Show();
		m_pStage1st->m_luTime++;
		//m_DS.Play(0);

		/*
		if(m_pStage1st->m_bCancel)
		{
		delete m_pStage1st;
		m_pStage1st=NULL;
		m_pScorePage= new CScorePage(&m_DD,(LPTSTR)IDB_BEGIN,&m_DI);
		}*/
		
		if(m_DI.m_bKeyDown[DIK_ESCAPE]||(bRun==false))
		{
		m_nScorePlayer1=m_pStage1st->GetScore1();//记录下player1的分数;
		
		delete m_pStage1st;
		m_pStage1st=NULL;
		m_pScorePage= new CScorePage(&m_DD,(LPTSTR)IDB_END,&m_DI,&m_DS,m_szSourceWaves[2],m_nSoundNum[2]);
		m_pScorePage->SetScore1(m_nScorePlayer1);//传递player1的分数给记分页面;
		}
	return;	
	}


	////////////////////////////////////////////////////////////////////////////////////////////
	if(m_pScorePage!=NULL)
	{
		m_pScorePage->Run();
		m_pScorePage->Show();
		m_pScorePage->m_luTime++;
		//m_DS.Play(0);

		if(m_DI.m_bKeyDown[DIK_RETURN]&&(!m_pScorePage->m_bLocked))
		{
		delete m_pScorePage;
		m_pScorePage=NULL;
		m_pBeginPage=new CBeginPage(&m_DD,(LPTSTR)IDB_BEGIN,&m_DI,&m_DS,m_szSourceWaves[0],m_nSoundNum[0]);
		}
	return;	
	}
   	
return;
}

///////////////////////////////////////////////////////////////////////////////////////////
//
void CGame::Show()
{
return;
}

////////////////////////////////////////////////////////////////////////////////
//
void CGame::Destroy()
{

if(m_pBeginPage!=NULL)delete m_pBeginPage;
if(m_pStage1st!=NULL)delete m_pStage1st;
if(m_pScorePage!=NULL)delete m_pScorePage; 

m_DD.Destroy();
m_DI.Destroy();
}

⌨️ 快捷键说明

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