08 C++课程设计 - 弹弹堂 - 图文 联系客服

发布时间 : 星期三 文章08 C++课程设计 - 弹弹堂 - 图文更新完毕开始阅读ba50807bc4da50e2524de518964bcf84b9d52d3d

实验六 炮弹发射完成

【实验内容】

步骤一、重新初始化游戏数据 步骤二、重新初始化目标精灵位置

【实验思路】

如果已经开炮,等待回合时间到了之后,开始下一回合。重新初始化游戏数据,随机改变三个目标精灵的位置。

【实验指导】

1、 进入LessonX.cpp中的GameRun函数里面,在if( 0 == m_iFireState )后面添加一个else

if判断:

else if( 1 == m_iFireState ) { }

2、 如果等待回合时间到了,即m_fRoundTime的值为小于0,则重新初始化数据,同时

改变三个目标精灵的位置,这部分和实验二中GameInit代码类似,所以这里不作分步骤说明,在上面的else if( 1 == m_iFireState )中添加如下代码:

m_fRoundTime -= fDeltaTime;

if( m_fRoundTime <= 0.f ) {

// 重新初始化 m_iFireState = m_fGunRotation m_fGunStrength

0; = =

m_fMaxRotation; 0.f;

// 目标每回合水平移动一次:

// 用循环遍历g_szTargetName,如果该精灵的被击中次数 // g_iTargetHit小于3才需要做

// 需要做的2件事:0-45之间随机X坐标,Y坐标不变。 // 然后使用dSpriteMoveTo移动精灵。请参考GameInit函数

}

int

iLoop = 0;

float fPosX = 0, fPosY = 0;

for( iLoop = 0; iLoop < TARGET_COUNT; iLoop++ ) { }

if( m_iTargetHit[iLoop] >= 3 )

continue;

= =

CSystem::RandomRange( 0, 45 ); m_pTarget[iLoop]->GetSpritePositionY();

// 每回合在X方向上,目标在0-45范围内随机移动一次 fPosX fPosY

m_pTarget[iLoop]->SpriteMoveTo(fPosX, fPosY, 40.f, 1);

实验七 判断游戏是否胜利

【实验内容】

步骤、判断是否胜利,是的话重新开始游戏

【实验思路】

遍历m_iTargetHit数组,如果有值小于3,则返回0,游戏未结束,否则游戏胜利。

【实验指导】

1、 进入LessonX.h中添加判断是否胜利的IsGameWin函数声明:

int IsGameWin();

2、 进入LessonX.cpp中添加该函数的定义:

int CGameMain::IsGameWin() { }

3、 判断游戏是否胜利,只需要使用for循环,遍历m_iTargetHit数组,如果有值小于3,

则返回0,游戏未结束。否则游戏胜利,返回1。在上面的函数定义里面添加如下代码:

int iLoop = 0;

for( iLoop = 0; iLoop < TARGET_COUNT; iLoop++ ) { }

return 1;

if( m_iTargetHit[iLoop] < 3 )

return 0;

4、 最后在GameMainLoop函数里面将case 2:中的if(true)改为if(!IsGameWin())

即可。

5、 如果游戏胜利,则本局游戏结束,因此需要在GameEnd函数里面添加下面一行代

码,使游戏结束后有重新开始新的游戏。

// 马上又开始游戏,所以直接设置状态 m_iGameState = 1; 至此,本实验结束。