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,

计算机大一课程设计游戏,01北科大暑期计算机实践FunCode游戏设计+C++课程设计_海底世界...相关推荐

  1. c语言funcode空格消失的函数,01北科大暑期计算机实践FunCode游戏设计+C++课程设计 - 海底世界 - 图文...

    C++语言课程设计一海底世界 一.实验内容 海底有五条鱼,其中四条来回随机游动,由玩家用键盘W A S D控制另外一条游动. 要求如下: 1. 游戏初始界面如下图. 2. 来回游动的四条鱼,从屏幕左边 ...

  2. 扫雷游戏软件测试,暑期社会实践 | 扫雷游戏的测试完善及总结

    原标题:暑期社会实践 | 扫雷游戏的测试完善及总结 在程序的前期准备和代码功能实现的基础上,信息工程学院扫雷少女101团队成员针对已具备基本雏形的扫雷游戏进行全方位仔细的测试,来发现程序现有或是未知的 ...

  3. 计算机大一萌新,要补充哪些计算机基本知识

    大一萌新,对计算机的基础知识.编程基础知识了解不多. 一上课,一上机,就有点惶惶. 这里找到一点计算机编程的入门参考资料. 1.计算机教育中缺失的一课 The Missing Semester of ...

  4. 网易游戏2015年暑期实习生面试经历-游戏研发工程师

    首先,我还是先介绍一下网易游戏吧,引用别人的一段话 作者:王选易,出处: http://www.cnblogs.com/neverdie/ 欢迎转载 ,也请保留这段声明.如果你喜欢这篇文章,请点[推荐 ...

  5. 计算机学院贺凤,我院举办2018年暑期社会实践宣讲会

    4月14日上午,计算机学院在D4-202教室举办2018暑期社会实践宣讲会.宣讲会由社会实践部干事牛安楠主持,学院辅导员燕晓彬.郑凯航,兼职辅导员贺凤.校团委陈钰以及院团委副书记尚芙蓉出席了本次宣讲会 ...

  6. 计算机学院贺凤,计算机学院举办2018年暑期社会实践宣讲会

    4月14日上午,计算机学院在D4-202教室举办2018暑期社会实践宣讲会.宣讲会由社会实践部干事牛安楠主持,学院辅导员郑凯航.燕晓彬.兼职辅导员贺凤.校团委陈钰以及院团委副书记尚芙蓉出席了本次宣讲会 ...

  7. HTML5期末大作业:影视在线网站设计——电影网H5(9页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码

    HTML5期末大作业:影视在线网站设计--电影网H5(9页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码 常见网页设计作业题 ...

  8. HTML期末大作业—— 游戏网页(5个页面) ~ 全屏游戏美术大赛作品征集网页 HTML+CSS+JS ~ web课程设计网页规划与设计

    HTML期末大作业-- 游戏网页(5个页面) ~ 全屏游戏美术大赛作品征集网页 HTML+CSS+JS ~ web课程设计网页规划与设计 临近期末, 你还在为HTML网页设计结课作业,老师的作业要求感 ...

  9. HTML期末大作业—— 游戏网页(5个页面) ~ 全屏游戏美术大赛作品征集网页 HTML+CSS+JS ~ web课程设计网页规划与设计...

    HTML期末大作业-- 游戏网页(5个页面) ~ 全屏游戏美术大赛作品征集网页 HTML+CSS+JS ~ web课程设计网页规划与设计 临近期末, 你还在为HTML网页设计结课作业,老师的作业要求感 ...

最新文章

  1. ubuntu修改主机名后无法解析主机
  2. 关闭线程池 shutdown 和 shutdownNow 的区别
  3. 中小型网络的域环境搭建--第五季(搭建FTP服务器)
  4. createDocumentFragment
  5. 简明python教程购买-简明Python教程:基本语法
  6. 微软亚洲研究院刘铁岩博士:迎接深度学习的“大”挑战(一)
  7. Java核心API -- 2(String、StringBuilder、StringBuffer)
  8. 指数级暴增、复杂场景下,揭秘百度云原生湖仓架构等系列数据产品
  9. 设计资源类的网站有哪些?
  10. 金融机构如何应对核心系统分布式智能化升级大潮?
  11. FFmpeg分离音视频,音视频合并,添加多音轨,格式转换,裁切,剪切常用参数详解
  12. C# 反编译修改dll文件
  13. 图解算法:八大排序算法
  14. VMware虚拟机Mac OS X 扩展内存方法
  15. java:找不到符号
  16. 【Unity 3D 从入门到实战】Unity 3D 组件总结
  17. LINQ查询————八大基本子句
  18. 大疆精灵4多光谱无人机P4M影像辐射定标方法(二)
  19. 语义分析(Semantic Parsing)调研
  20. 从零开始学Python爬虫系列:Matplotlib FuncAnimation这1个功能,加1个更新函数,画出最简单的动图,让你爬取的数据动起来。(附:图片上加弹幕功能)

热门文章

  1. Hook技术之API拦截(API Hook)
  2. 为何NFC移动支付技术未火就已走向衰败
  3. 你知道二维码和NFC的优缺点吗?你认为谁才是移动支付的未来?
  4. OpenCV2马拉松第1圈——纵观全局
  5. java取网页数据_Java抓取网页数据(原来的页面+Javascript返回数据)
  6. 【React】Windows下React项目搭建
  7. 带宽、码率、帧率、分辨率的基本概念
  8. 阿里云购买ECS服务器,实例列表无实例
  9. 俄罗斯钓鱼4 ——攻略合集
  10. telnet安装和使用教程