网站大量收购独家精品文档,联系QQ:2885784924

第4讲 魔力方块自动求解.ppt

  1. 1、本文档共68页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第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精品文档

相关文档