第1讲基础俄罗斯方块游戏界面.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
俄罗斯方块游戏 知识点 第05、06讲 俄罗斯方块游戏 5.1 需求分析-俄罗斯方块游戏 5.2 补充知识 5.3 地图、方块的表示及地图的绘制 阶段程序:俄罗斯方块1 5.4 新方块落下及产生下一个随机的方块 阶段程序:俄罗斯方块2 5.5 实现玩游戏(响应方向键) 阶段程序:俄罗斯方块3 5.6 完善游戏(响应回车键、空格键) 阶段程序:俄罗斯方块4 5.1 需求分析-俄罗斯方块游戏 本课件所设计的俄罗斯方块游戏功能如下: 在窗口客户区显示俄罗斯方块游戏地图; 能随机地产生7种方块之一,并显示出下一个将落下的方块。 可以通过方向键控制当前方块的移动和旋转; 可以通过回车键控制游戏的暂停/重启; 可以通过空格键将当前方块一步到位; 每当放置一个方块,立刻清除“满”的行,下一个方块落下。 5.2 补充知识 定时器的使用:当需要程序每间隔一个固定时间执行一段程序或某个功能,就需要使用定时器。 避免闪烁,思路:先在一张“位图”上画好图形,然后“拷贝”到用户区。 人为的发送消息:消息通常是操作系统自动发送给窗口的,在程序中也可以通过API函数人为地发送一个消息。 5.2.1 定时器的使用 为了区分不同的定时器,为每个定时器定义一个标识-编号; 定时器一个重要参数-定时时间; 启动定时器-API函数:SetTimer; 关闭定时器-API函数:KillTimer。 “定时执行某个功能”,“功能”的实现 测试程序-Project1:圆球定时移动 修改“【二】实验3-Project3:移动用户区中的圆”,实现圆球定时随机移动: 定义定时器的标识和定时时间(符号常量); 在WM_CREATE消息中启动定时器; 响应WM_TIMER消息; 在WM_DESTROY消息中关闭定时器。 5.2.2 避免闪烁 造成闪烁的原因主要有: 在不必要刷新的时候刷新了(【二】实验3,Project4:练习2修改,如果处理不好,就会因为这种情形出现闪烁)。 刷新的频率太高了(比如,前面的Project1,每间隔200毫秒刷新整个用户工作区)。 只有部分区域需要刷新时,刷新整个用户工作区。 避免闪烁的方法主要有: 只有在有必要刷新时才刷新; 只刷新需要刷新的区域; 先在一张“位图”上画好图形,然后“拷贝”到用户区。 测试程序-Project2:避免闪烁 改进前面的Project1,避免闪烁 创建与原设备描述表兼容的设备描述表; 创建与原设备描述表兼容的位图; 将位图选入兼容的设备描述表; 在兼容的设备描述表中绘图; 绘图完毕将兼容的设备描述表拷贝到原设备描述表。 InvalidateRect函数说明 该函数强制使得窗口客户区中某个区域无效,相当于向Windows系统发送了一个刷新请求,这样Windows操作系统会向窗口发送WM_PAINT消息。 BitBlt函数说明 将源设备描述表的某个矩形区域拷贝到目标描述表的指定位置。 5.2.3 人为的发送消息 思考:消息是由谁发送给谁?怎么发送的? 发送消息-API函数:PostMessage; 测试程序-Project3:人为发送消息 继续改进前面的Project2,实现: 当圆球碰到窗口边界时,(一定要先)关闭定时器,弹出一个对话框,并退出应用程序。 5.3 地图、方块的表示及地图的绘制 俄罗斯方块游戏的地图有若干行、若干列; 俄罗斯方块游戏中,每个方块具有规则的形状; 在窗口客户区绘制俄罗斯方块游戏地图。 5.3.1 地图的表示 俄罗斯方块游戏的地图(在窗口用户区中绘制出的地图)为22行×12列,用一个24行×14列的数组存储每格的状态(被占据的方格为1,否则为0),其中第0行不显示;第23行,第0、13列不用。如右图所示。 行数和列数分别用ROW和COL表示,分别为24和14。 窗口坐标系:X向右,Y向下。 为了与窗口坐标系一致,二维数组行循环变量用y,列循环变量用x。方块的当前位置(指最左上角方格在坐标系中的位置)为(CurrentY, CurrentX)。 5.3.2 方块的表示 本游戏提供了7种方块类型,如右图所示。 每种方块用4×4的二维数组存储,7种方块用7×4×4的三维数组存储。 三维数组的理解 5.3.3 地图的绘制 在窗口客户区绘制俄罗斯方块游戏地图及下一个将落下的方块。 窗口坐标系:X向右,Y向下。 阶段程序:俄罗斯方块1 实现功能: 在入口函数中创建窗口时创建合适的大小; 在窗口用户区中绘制地图; 人为的设置当前方块和下一个方块,并在窗口用户区中绘制。 实现步骤: 1)建立名为“tetris”的“Win32 Application”工程,并新建名为“main.cpp”的源文件。代码见下一页。 编译运行,程序界面如下图所示。 2)添加如下宏定义(符号常量)、全局变量和函数声明: 3)在窗口处理函

文档评论(0)

iris + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档