01北科大暑期计算机实践FunCode游戏设计+C++课程设计_海底世界 联系客服

发布时间 : 星期一 文章01北科大暑期计算机实践FunCode游戏设计+C++课程设计_海底世界更新完毕开始阅读6bc6f26b591b6bd97f192279168884868762b8df

fSpeedX= 15.f;//向右的时候X方向的速度为正值 break;

}

4) 调用函数设置鱼的速度:

m_pMyFish->SetSpriteLinearVelocity(fSpeedX, fSpeedY);

5) 在Main.cpp中OnKeyDown函数里面添加对该自定义函数的调用:

g_GameMain.OnKeyDown(iKey,bAltPress,bShiftPress,bCtrlPress);

5、 处理键盘释放消息需要添加一个自定义函数OnKeyUp:

1) 在LessonX.h中添加该函数的声明: void OnKeyUp( const int iKey );

2) 在LessonX.cpp中添加该函数的定义:

void CGameMain::OnKeyUp( const int iKey ) { }

3) 判断按下的按键键值并设置速度值为0,在上面的函数里面添加如下代码:

float fSpeedX, fSpeedY; switch(iKey) {

case KEY_W: case KEY_A: case KEY_S: case KEY_D: fSpeedX = 0.f; fSpeedY = 0.f; } 4) 调用函数设置鱼的速度:

m_pMyFish->SetSpriteLinearVelocity(fSpeedX, fSpeedY);

5) 在Main.cpp中OnKeyUp函数里面添加对该自定义函数的调用: g_GameMain.OnKeyUp(iKey);

实验七键盘控制鱼的图片翻转

【实验内容】

步骤、响应系统按键消息使鱼游动,同时如果往反方向游则翻转鱼的图片

【实验思路】

定义四个变量m_fSpeedLeft、m_fSpeedRight、m_fSpeedTop、m_fSpeedBottom表示鱼往四个方向游动的速度,因此只要控制这四个变量的正负就可以控制鱼的游动了,同时判断按键按下了反方向的键值时就翻转鱼的图。例如当按下A使鱼往左游动,如果此时按下D则将鱼翻转往右游。

【实验指导】

1、 在LessonX.h中添加如下变量声明:

float m_fSpeedLeft ;// 鱼4个方向的速度 float m_fSpeedRight ;

float m_fSpeedTop ; float m_fSpeedBottom ;

2、 在LessonX.cpp中的构造函数里面添加以上变量的初始化代码:

m_fSpeedBottom= 0.f; m_fSpeedLeft= 0.f; m_fSpeedRight= 0.f; m_fSpeedTop= 0.f;

3、 判断按下的键值,分情况处理与的速度,在OnKeyDown中将原来的代码注释掉,

同时添加以下代码:

1) 根据不同键值设置鱼不同的速度:

switch(iKey) {

case KEY_W: m_fSpeedTop = -10.f; break; case KEY_A: m_fSpeedLeft = -15.f; break; case KEY_S: m_fSpeedBottom = 10.f; break; case KEY_D: m_fSpeedRight = 15.f; break; }

2) 因为每次键值转换的时候鱼会停止下来,即速度为0,此时根据按键重新给鱼赋新的速度,所以此时只要判断m_fSpeedLeft + m_fSpeedRight与0的大小就可以决定是否翻转图片了。

if((m_fSpeedLeft + m_fSpeedRight) > 0) m_pMyFish->SetSpriteFlipX( false); else if((m_fSpeedLeft + m_fSpeedRight) < 0) m_pMyFish->SetSpriteFlipX( true); 3) 最后给鱼设置速度:

m_pMyFish->SetSpriteLinearVelocity( m_fSpeedLeft + m_fSpeedRight, m_fSpeedTop + m_fSpeedBottom);

4、 判断释放的键值,将鱼所有方向的速度设置为0,在OnKeyUp中将原来的代码注释

掉,同时添加以下代码:

1) 将鱼所有方向速度设置为0

switch(iKey) {

case KEY_W: m_fSpeedTop = 0.f; break;

}

case KEY_A: m_fSpeedLeft = 0.f; break; case KEY_S: m_fSpeedBottom = 0.f; break; case KEY_D: m_fSpeedRight = 0.f; break;

2) 由于玩家可能释放了非WASD中的一个键,因此这里同样需要再次判断m_fSpeedLeft + m_fSpeedRight的值;来决定是否翻转鱼的图片

if((m_fSpeedLeft + m_fSpeedRight) > 0) m_pMyFish->SetSpriteFlipX( false); else if((m_fSpeedLeft + m_fSpeedRight) < 0) m_pMyFish->SetSpriteFlipX( true); 3) 最后给鱼设置速度:

m_pMyFish->SetSpriteLinearVelocity( m_fSpeedTop + m_fSpeedBottom);

m_fSpeedLeft

+

m_fSpeedRight,

实验八封装键盘控制鱼游动的代码

【实验内容】

步骤、将键盘控制鱼游动的动作独立写成一个函数

【实验思路】

类中多个函数中处理了键盘控制鱼游动的代码,因此可以将其写成一个函数供其他函数调用。

【实验指导】

1、 添加一个自定义函数Swimming处理键盘控制鱼游动的动作。在LessonX.h中添加该

函数的声明: void Swimming(); 2、 在LessonX.cpp中添加该函数的定义: void CGameMain::Swimming() { }

3、 最后处理键盘判断鱼是否翻转以及赋给鱼速度的动作,在上面的定义中添加如下代

码: if((m_fSpeedLeft + m_fSpeedRight) > 0)

m_pMyFish->SetSpriteFlipX(false);

else if((m_fSpeedLeft + m_fSpeedRight) < 0)

m_pMyFish->SetSpriteFlipX(true);

m_pMyFish->SetSpriteLinearVelocity( m_fSpeedLeft + m_fSpeedRight, m_fSpeedTop +

m_fSpeedBottom);

4、 最后将OnKeyDown和OnKeyUp函数中的如下代码注释并添加Swimming函数的调

用代码:

1) 注释掉以下代码:

if((m_fSpeedLeft + m_fSpeedRight) > 0) m_pMyFish->SetSpriteFlipX(false); else if((m_fSpeedLeft + m_fSpeedRight) < 0) m_pMyFish->SetSpriteFlipX(true);

m_pMyFish->SetSpriteLinearVelocity( m_fSpeedTop + m_fSpeedBottom); 2) 添加Swimming函数调用

Swimming(); 至此,本实验结束。

m_fSpeedLeft + m_fSpeedRight,