FunCode程序設計實驗教材系列
C++面向對象課程設計實驗指南
sh( );
public:
voidOnMove(boolbKeyDown,intiKey);
private:
float m_fVelocityLeft; // 控制的魚的上下左右游動速度
float m_fVelocityRight;
float m_fVelocityUp;
float m_fVelocityDown;
};
4、在CMyFish類的構造函數中,首先初始 4個方向的速度為 0,然后設置小魚縮小到
原圖的1/4,最后設置和世界邊界的碰撞屬性為 WORLD_LIMIT_STICKY,當碰到世界邊
界時,小魚靜止不動。而小魚的世界邊界大小,我們設置為比屏幕的大小大 2個單
位。
// 設置魚的模型大小為 1/4
SetSpriteScale(0.25f);
// 世界邊界限制
SetSpriteWorldLimit(WORLD_LIMIT_STICKY,
CSystem::GetScreenLeft( )-2.f,
CSystem::GetScreenTop( )-2.f,
CSystem::GetScreenRight( )+2.f,
CSystem::GetScreenBottom( )+2.f);
5、編寫CMyFish類OnMove方法代碼。首先判斷當前按鍵是按下還是松開的,其次判
斷是哪個按鍵的消息,根據這兩個判斷,為 4個方向的速度矢量賦值。再次算出 X
后和Y軸上的速度,并設置小魚的速度。 最后根據 X軸方向的速度值設置魚的朝向。
當速度不為 0的時候,更改魚的朝向。
voidCMyFish::OnMove(boolbKeyDown,intiKey)
{
if(bKeyDown)
{
switch(iKey)
{
caseKEY_A:// 左
m_fVelocityLeft = 30.f;
break;
caseKEY_D:// 右
m_fVelocityRight=30.f;
break;
caseKEY_W: // 上
m_fVelocityUp = 15.f;
精選
break;
caseKEY_S:// 下
m_fVelocityDown = 15.f;
break;
}
}
else
{
switch(iKey)
{
caseKEY_A:// 左
m_fVelocityLeft = 0.f;
break;
caseKEY_D:// 右
m_fVelocityRight=0.f;
break;
caseKEY_W: // 上
m_fVelocityUp = 0.f;
break;
caseKEY_S:// 下
m_fVelocityDown = 0.f;
break;
}
}
floatfVelX =m_fVelocityRight-m_fVelocityLeft;
floatfVelY=m_fVelocityDown-m_fVelocityUp;
SetSpriteLinearVelocity(fVelX,fVelY);
當速度不為0的時候,更改魚的朝向
if(fVelX<-0.0001f||fVelX>0.0001f)
{
if(fVelX>0.0001f)
SetSpriteFlipX(false);
else
SetSpriteFlipX(true);
}
}
6、在CGameMain類中,首先添加一個小魚對象的指針 m_pMyFish。其次在構造函數
中將m_pMyFish賦予NULL的初始值。再次在 GameInit方法中初始化 m_pMyFish。
因為我們用 new方法創建了 m_pMyFish對象,分配了內存,所以我們在 CGameMain
類的析構函數中需要調用 delete方法將 m_pMyFish使用的內存釋放掉。
if(NULL==m_pMyFish)
{
創建對象實例
內容來自淘豆網www.canything.com轉載請標明出處.