实验六 炮弹发射完成
【实验内容】
步骤一、重新初始化游戏数据 步骤二、重新初始化目标精灵位置
【实验思路】
如果已经开炮,等待回合时间到了之后,开始下一回合。重新初始化游戏数据,随机改变三个目标精灵的位置。
【实验指导】
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; 至此,本实验结束。