- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)