版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、场景场景:简单背景,无障碍。背景音乐。角色角色:n(1)敌方坦克,数量1020n(2)玩家坦克,数量1规则规则:n(1)坦克相互射击。n(2)玩家全部消灭电脑坦克获胜。n(3)被敌方坦克发射子弹击中,玩家生命减1,3次失败!n(4)消灭坦克1个得分50,500分以上生命加1。背景图片背景图片坦克图片坦克图片声音文件声音文件bomb.wav被击中时图片被击中时图片背景音乐背景音乐bkmusic.mp31.导入资源:导入资源:(1)背景导入为位图资源(2)坦克导入为ICON资源 n2.创建背景创建背景(1)定义位图m_bkBitmap(2)载入位图LoadBitmap(IDB_BK);(3)绘制位
2、图:按窗口大小平铺绘制n3.载入坦克资源载入坦克资源(1)定义坦克ICON数组(5种状态)(View.h)(2)载入ICON资源; (View.cpp)n4.定义坦克类定义坦克类属性:属性:(1)屏幕位置 :CRect m_Rect;(2)图片指针:ICON图片指针(从view中传递)(3)移动方向(上下左右),int m_nDirection(4)移动速度(步长)int m_nStep;方法:方法:(1)绘制坦克:void Draw(CDC *pDC)(2)移动坦克:void Move();坦克类坦克类Tank.hnDraw实现:实现:根据坦克当前位置和方向绘制坦克图片。 ICON图片绘制:
3、图片绘制:CDC:DrawIcon(CPoint p,HICON *hIcon);坦克类坦克类Tank.cppnMove的实现:的实现:根据坦克当前位置、方向和步长计算下一位置。 CRect:OffsetRect(int xoff,int yoff);坦克类坦克类Tank.cpp 1.定义坦克:定义坦克:电脑坦克(动态数组),玩家坦克1个 2.初始化坦克:初始化坦克:(1)初始化数组;(2)计算坦克屏幕初始位置(3)传递ICON资源 3.绘制坦克绘制坦克n2.初始化坦克:初始化坦克:玩家:初始位置屏幕底端。电脑:随机产生屏幕位置(不重叠)。初始化坦克(初始化坦克(1)初始化坦克(初始化坦克(2
4、)初始化坦克(初始化坦克(3)3.绘制坦克绘制坦克(2)OnDraw中绘制角色中绘制角色(1)添加开始按钮)添加开始按钮添加背景音乐添加背景音乐MCI:Windows媒体控制接口,程序不必关心具体设备,就可以对激光唱机(CD)、视盘机、波形音频设备、视频播放设备和MIDI设备等媒体设备进行控制。通过向MCI发送不同命令,可以让设备完成各种功能,而不必关心设备内部实现。mciSendCommandmciSendCommand函数函数: :添加背景音乐添加背景音乐参数结构定义参数结构定义包含头文件包含头文件加入库文件加入库文件winmm.lib停止播放停止播放n每个坦克创建每个坦克创建1个线程,根
5、据各自任务计算其个线程,根据各自任务计算其下一位置,不断刷新绘制,以实现坦克移动。下一位置,不断刷新绘制,以实现坦克移动。n电脑坦克任务:电脑坦克任务:尽量向玩家坦克靠近,发射子弹以消灭玩家。n玩家任务:玩家任务:手动控制移动,发射子弹消灭电脑坦克。创建坦克线程创建坦克线程1.定义线程参数结构定义线程参数结构(view.h):创建时传递给线程。线程需要的参数:(1)父窗口指针CView指针(2)当前坦克对象指针(一个坦克一个线程)(3)当前坦克是否被消灭n2. 创建线程,传递参数创建线程,传递参数3. 实现线程函数实现线程函数(1)获取参数结构(2)与其他线程同步(采用临界区)(3)计算移动路
6、径坦克路径计算坦克路径计算(1)尽量向玩家坦克移动(2)不与其他坦克重叠闪屏问题的解决闪屏问题的解决n闪屏产生的原因闪屏产生的原因:(1)窗口重绘时系统先绘制窗口背景(默认为白色),再绘制用户图形。(2)线程中Invalidate函数不断发送WM_PAINT消息,窗口屏幕不断刷新重绘,造成屏幕闪烁。n解决方案:解决方案:屏蔽窗口背景填充;使用内存设备先绘制图形,再一次性输出到屏幕。(1)重载消息函数WM_ERASEBKGND,并修改(2)修改OnDraw()玩家坦克控制玩家坦克控制1.1.键盘移动控制坦克移动键盘移动控制坦克移动通过获取键盘键值判断移动方向:上38; 下40; 左37; 右39发射子弹:空格键32:重载重载ViewView类类WM_KEYDOWNWM_KEYDOWN消息消息 InitTank()已实现初始化玩家子弹控制玩家子弹控制n定义子弹类n空格键发射子弹n创建子弹线程n子弹保存到数组n子弹实时绘制n(1)创建子弹类:CTank继承n(2)定义子弹数据结构n(3)创建子弹(玩家)n(4)创建子弹线程(玩家)n(5)子弹线程(玩家)n(6)绘制子弹:OnDraw()n(7)检测是否被击中(玩家)坦克子弹控制坦克子弹控制n发射子弹(随机)n子弹保存到数组n创建子弹线程,子弹移动n检测是否击中目标(玩
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 机关语言文字考核制度
- 道路项目经理考核制度
- 安全事帮责任考核制度
- 我国大学期末考核制度
- 法院法警日常考核制度
- 酒店安全责任考核制度
- 农村道路安全考核制度
- 实训指导教师考核制度
- 策划执行公司考核制度
- 运动队教练员考核制度
- 实验室安全管理制度文件
- 江苏省淮安市2026届九年级英语第一学期期末统考试题含解析
- 手机摄影培训课件
- 高渗盐水治疗脑水肿及颅内高压专家共识解读 3
- GB/T 45860.1-2025光纤激光束焊机的验收试验第1部分:光纤输送机的激光组件
- 多学科围手术期气道管理国际专家共识2025年版
- 《幼儿园班级管理 》课件-第一章 幼儿园中的班级
- GB/T 4447-2025船舶与海洋技术海船起锚机和起锚绞盘
- 维保工作管理制度
- TSG21-2025固定式压力容器安全技术(送审稿)
- 尼康S8100数码相机使用说明书
评论
0/150
提交评论