第4讲简单游戏范例总结.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言程序设计培训高级讲义 ——游戏修改器设计(1);第4讲 简单游戏范例 ——坦克大战;场景:简单背景,无障碍。背景音乐。 角色: (1)敌方坦克,数量10~20 (2)玩家坦克,数量1 规则: (1)坦克相互射击。 (2)玩家全部消灭电脑坦克获胜。 (3)被敌方坦克发射子弹击中,玩家生命减1,3次失败! (4)消灭坦克1个得分50,500分以上生命加1。;游戏素材;1.导入资源: (1)背景导入为位图资源 (2)坦克导入为ICON资源 ;2.创建背景 (1)定义位图m_bkBitmap (2)载入位图LoadBitmap(IDB_BK); (3)绘制位图:按窗口大小平铺绘制;3.载入坦克资源( (1)定义坦克ICON数组(5种状态)(View.h) (2)载入ICON资源; (View.cpp);4.定义坦克类 属性: (1)屏幕位置 :CRect m_Rect; (2)图片指针:ICON图片指针(从view中传递) (3)移动方向(上下左右),int m_nDirection (4)移动速度(步长)int m_nStep; 方法: (1)绘制坦克:void Draw(CDC *pDC) (2)移动坦克:void Move();;坦克类Tank.h;Draw实现:根据坦克当前位置和方向绘制坦克图片。 ICON图片绘制:CDC::DrawIcon(CPoint p,HICON *hIcon);;Move的实现:根据坦克当前位置、方向和步长计算下一位置。 CRect::OffsetRect(int xoff,int yoff);; 1.定义坦克:电脑坦克(动态数组),玩家坦克1个 2.初始化坦克: (1)初始化数组; (2)计算坦克屏幕初始位置 (3)传递ICON资源 3.绘制坦克;2.初始化坦克: 玩家:初始位置屏幕底端。 电脑:随机产生屏幕位置(不重叠)。;初始化坦克(2);初始化坦克(3);3.绘制坦克;添加背景音乐;添加背景音乐;每个坦克创建1个线程,根据各自任务计算其下一位置,不断刷新绘制,以实现坦克移动。 电脑坦克任务:尽量向玩家坦克靠近,发射子弹以消灭玩家。 玩家任务:手动控制移动,发射子弹消灭电脑坦克。;创建坦克线程;2. 创建线程,传递参数;3. 实现线程函数 (1)获取参数结构 (2)与其他线程同步(采用临界区) (3)计算移动路径;坦克路径计算 (1)尽量向玩家坦克移动 (2)不与其他坦克重叠;;闪屏问题的解决;(1)重载消息函数WM_ERASEBKGND,并修改;玩家坦克控制;;玩家子弹控制;(1)创建子弹类:CTank继承;(2)定义子弹???据结构 ;(4)创建子弹线程(玩家);(5)子弹线程(玩家);;(6)绘制子弹:OnDraw(…);(7)检测是否被击中(玩家);坦克子弹控制;坦克子弹控制;坦克子弹控制;(3)子弹线程;(4)检测是否被击中(电脑);练习

文档评论(0)

bbnnmm885599 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档