第4讲 魔力方块自动求解.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文档。上传文档
查看更多
第4讲 魔力方块自动求解.ppt

第4讲 魔力方块自动求解 知识点 一、魔力方块 二、程序说明 三、程序界面采用的技术和方法 3.1 控件布局 3.2 程序界面参数 3.3 自定义数据及函数说明 3.4 方框转动和移动 3.5 静态文本控件旋转 3.6 计时和记录步数 四、自动求解的实现 4.1 状态的表征 4.2 状态的转换 4.3 自动求解实现 一、魔力方块 与滑块问题(如8数码问题)有点相像,但差别比较大。 N×N个方块组成的阵列,方块被随机地标上数字1~N2。 用一个方框选中2×2区域内的方块;可以通过鼠标或方向键移动方框,从而选中不同的方块。 点击方框,方框内的4个方块将按顺时针旋转90度。 游戏的目标是使得顺序随机打乱的方块,经过若干次旋转后,N2个方块按顺序排列(即到达目标状态)。 一个参考程序:魔力方块单机版。 开发工具:Flash。 手工求解:用上、下、左、右方向键移动方框,按Z键表示旋转。 有多种Level,难度大。 思考 你能找到魔力方块游戏的求解规律吗? 二、程序说明 本课件所设计的程序实现了魔力方块的人工求解和自动求解。主要功能为: 有计时和统计步数的功能。 随机设置初始状态。 人工求解:通过鼠标移动来选择一个方框,再单击鼠标左键(或点击“旋转”按钮)使得方框内的4个方块顺时针旋转90度,经过若干次旋转后达到游戏的目标状态。 自动求解:在任何时刻(包括人工求解到某个中间状态)都可以通过点击“自动求解”按钮,来实现自动求解,每次点击只能旋转一次,连续点击可达目标状态。 三、程序界面采用的技术和方法 程序界面具有的特点: 基于对话框的应用程序。 方块的表示:用9个静态文本控件代表9个方块,并选中文本控件的“边框”属性。(思考,下图中哪些静态文本控件被设置了“边框”属性?) 方框的表示及转动:用40个图片控件表示方框的四条边,通过定时变换这40个图片控件的位置来到达实现方框“转动”的目的。 方框的切换(移动):当鼠标光标移动到不同的2×2区域时,方框也随之移动。 突出显示方框内的方块:当移动鼠标时,通过改变方框内4个方块(即静态文本控件)的风格来突出显示。 方块的旋转:旋转一步是通过50小步来实现的(定时时间到,则旋转一小步,旋转到第50步时,旋转结束),每次近似转动π/100角度,计算方块的新位置,并将方块移动到新位置。 3.1 控件布局 9个静态文本控件,ID为:IDC_NUM1~IDC_NUM9。 40个图片控件,ID为:IDC_STATIC1~IDC_STATIC40。 命令按钮。 “新局”:IDC_NEWGAME; “旋转”:IDC_ROTATE; “自动求解”:IDC_SOLVE。 静态文本控件。时间:IDC_TIME;步数:IDC_STEPS。 3.2 程序界面参数 每个方块的大小是54×54(像素),横向和纵向均间隔36个像素。其中最左上角的方块,其左上角坐标(为客户区坐标)为(65,50)。 方框有4种状态,每种状态有2个位置。组成方框的40个图片控件,大小为2×9(或9×2),方框的边界距离方框内的方块均为18个像素,从而使得方框的中心和4个方块的中心一致。 CWnd类的MoveWindow函数 所有的控件类都是CWnd类的派生类。 MoveWindow函数不仅可以移动控件,还可以指定控件的宽和高,从而实现改变控件的大小。 3.3 自定义数据及函数说明 3.4 方框转动和移动及方框内方块的突出显示 思考:斑马线行人指示灯,绿色表示行人可以通行;当指示灯变绿时,显示为人形图像移动,这种动态效果是怎么实现的? 两种图像间隔定时显示。 方框转动 方框的2个位置:fortypics0[40][2],fortypics1[40][2] 左边10个静态文本控件:位置1的y坐标比位置0的y坐标大10。 … 方框转动的实现: 定时器编号:1。 定时时间:250毫秒。 定时时间到,切换方框的位置(上一次是位置0,则现在是位置1,反之亦然),并更新。 方框移动 当鼠标光标位于不同位置时,可能需要移动方框。 实现方法:响应WM_MOUSEMOVE消息。 方框内方块的突出显示 方框内的方块具有WS_THICKFRAME风格,方框外的方块不具有WS_THICKFRAME风格。 当鼠标光标移动,并使得方框移动时,则调用setfocus函数,改变相应方块的风格。 3.5 静态文本控件旋转 静态文本控件旋转是一种假象。 当点击“旋转”按钮,或用鼠标点击方框区域时,方框内的4个静态文本控件应该顺时针旋转90度。例如: 1 2 → 4 1 4 5 → 5 2 旋转的实现:定时时间(定时时间为1毫秒,很短,所以旋转动作很连续)到,旋转1小步(π/100角度),到达新的位置。 旋转是一种假象:累计旋转到50小步,将4个静态文本控件重新还原到原来的位置;但将

文档评论(0)

好文精选 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档