- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
VC++程序设计项目实践 贾振华 第6章 俄罗斯方块游戏的开发 学习目标: 1. MFC类之间关系的基本概念 2. 进行图形的绘制的具体应用 3. 如果进行图形重绘 4. 如何响应键盘消息 6.1 基础知识6.1.1 Windows程序工作原理 6.1 基础知识6.1.2程序结构剖析 6.2系统分析 俄罗斯方块的游戏规则是:在游戏界面中,不停的有游戏方块从窗口上方往下落。游戏者需要根据游戏方块的形状,操作控制键对方块进行移动、旋转,尽可能将一层铺满。当一层被铺满后,该层会消失,否则层会迭高。当层数迭高到不能落下游戏方块后,该游戏结束。 6.3系统设计 为实现本实例的功能,主要完成如下几方面: (1)设计几种方块形状。对于用4个小方块组成的方块组合,不考虑自身旋转变化的话,总共有7种,分别为L型,T型,一型,N型,田型,J型以及倒N型。方块的这几种不同形状,可以使用产生随机数的办法随机抽取一种。坐标系采用左上角为坐标系中心,横轴向右,纵轴向下。 6.3系统设计 (2)初始化显示和屏幕刷新时重绘游戏面板及方块。方块由4*4的共16个单元格组成,同时游戏面板由10*20的单元格组成。单元格初始标记为0,即不显示,如果是1则以分配的颜色显示。这样整个10*20个单元格就可以通过颜色来表示彩色方块或黑色背景了。 6.3系统设计 (3)使方块定时下落。这可以通过定时器来控制。 (4)响应按键消息,包括让方块向左、右、下方向落下,及旋转。可以通过坐标值加1或减1个单元格来实现。 (5)判断方块是否出界。主要是通过判断坐标是否小于或大于边界范围,即超出0~9和0~19个单元格。 (6)判断游戏结束。及新产生的方块已经落到之前的方块上,不能在下降,此时即弹出提示框显示游戏结束和分数。 为了达到以上的目的,设置成员变量如表6-1所示。 6.3系统设计 6.3系统设计 表6-2 成员函数 6.4系统实现6.4.1 新建工程 创建Single document。 编译、执行,测试刚创建的新工程是否工作正常。 6.4系统实现6.4.2 设计七种方块形状 总共有7种,分别为L型,T型,一型,N型,田型,J型以及倒N型。方块的这几种不同形状,可以使用产生随机数的办法随机抽取一种。坐标系采用左上角为坐标系中心,横轴向右,纵轴向下。 6.4系统实现6.4.3 显示方块 根据方块形状初始将cor[x][y]==1,即是方块形状的位置, 在游戏面板上以初始方块颜色重绘显示 重绘正在下降和左右移动的方块, 产生方块 显示方块 6.4系统实现6.4.4 显示游戏面板 擦除之前画的方块,即以黑色覆盖轨迹 是方块形状的位置则将cor[x][j]==1,用于以后的方块局部重绘 根据方块形状初始将cor[x][y]==1,即是方块形状的位置, 在游戏面板上以初始方块颜色重绘显示 重绘正在下降和左右移动的方块, 避免擦除轨迹时闪屏造成方块运动不连续 在游戏面板右部空白处提示显示下一个新产生的方块 6.4系统实现6.4.4 显示游戏面板 根据方块形状初始将cor[x][y]==1,即是方块形状的位置, 在游戏面板上以初始方块颜色重绘显示 显示下一个新产生的方块 第一个方块倒底后绘制黑色游戏面板 用背景色擦除游戏面板右上部分的原有图形 重绘正在下落的和到底的方块 落到面板不动的方块变色 6.4系统实现6.4.5 方块自动下降 方块通过设置定时器自动下降 如果方块没下降到底则继续下降 游戏面板已满,游戏结束,是否重新开始新游戏 6.4系统实现6.4.6 按键控制方块向左移动 方块向左移动,每次按键使横坐标减1 6.4系统实现6.4.9 响应键盘消息 响应向左箭头方向控制,即左移 响应向右箭头方向控制,即右移 响应向下箭头方向控制,即加速下降 响应向上箭头方向控制,即旋转 重绘游戏面板 此时编译执行测试代码,通过键盘方向键控制可以看到图形的向左、向右、向下移动,但此时的运动轨迹并没有擦除,而且还超出了游戏界面的边界,在后面的步骤中将解决这些问题。 6.4系统实现6.4.10 擦除方块运动轨迹 (1)首先要添加设置标志位的代码如下: 将当前方块标志为0,游戏面板重绘时不显示方块 保存当前方块横坐标,重绘面板时删除之前轨迹 保存当前方块纵坐标,重绘面板时删除之前轨迹 (2)在BlockDisplay中添加flag=1;。 (3)如果是向左移东,修改响应键盘函数在MoveToLeft()函数前添加BlockErase(),函数的后面添加flag2 = 1。 6.4系统实现6.4.11 判断方块是否出左边界 小于等于0出左边界 6.4系统实现6.4.13 按键控制方块旋转
您可能关注的文档
最近下载
- 正常新生儿护理演示ppt课件.ppt
- 硬笔楷书教学课件.pptx VIP
- 天津市南开翔宇学校初一新生分班(摸底)数学模拟考试(含答案).pdf VIP
- 第1课 寻找信息科技(教学设计)-2024-2025学年人教版(2024)信息三年级全一册.docx VIP
- 南京电子地图超大版-超清晰-3600-x-5100分辨率.pdf VIP
- 冷轧带钢再结晶退火的感应加热.pdf VIP
- (高清版)B-T 18380.12-2022 电缆和光缆在火焰条件下的燃烧试验 第12部分:单根绝缘电线电缆火焰垂直蔓延试验 1kW预混合型火焰试验方法.pdf VIP
- 大学生竞选班长最新PPT课件.ppt VIP
- 云教版劳动与技术四年级上册2切菜.pptx VIP
- 育婴员(职工组)基础知识模块(模块一).docx VIP
文档评论(0)