版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本节目标这节课即我们即将学习迷宫的绘制数字地图的使用路径的自动搜索本节目标这节课即我们即将学习走迷宫17-1迷宫程序界面如右图所示点击“重建地图”,地图被擦除,用户通过点击鼠标或按着鼠标左键拖动鼠标来绘制地图绿色代表通道,小猫只能在通道上行走,不能走到白色的区域上面去点击“探索迷宫”,小猫自动在绘制完成的地图上寻找路径,直到吃到鱼或发现没有通到鱼的路径可走为止走迷宫17-1迷宫程序界面如右图所示走迷宫17-2程序中有5个角色,分别是小猫汤姆、绘制通道的绿色方块、“重建地图”按钮、鱼和“探索迷宫”按钮走迷宫17-2程序中有5个角色,分别是小猫汤姆、绘制通道的走迷宫17-3地图绘制原理将屏幕划出一个宽420高300的区域,然后将此区域分为宽30高30的小方格。这样的小方格有14列,10行,共计140个。“通道”角色是一个宽30高30的绿色方块。绘制地图时,判断鼠标按下时鼠标光标所处的位置落于哪个小方格中,然后将“通道”角色移至该方块的左下角,使用“图章”方法绘制一个方格走迷宫17-3地图绘制原理走迷宫17-4地图绘制原理为了易于程序判断,除了在屏幕上绘制地图,还要保存一幅“数字地图”。建立链表map,插入140个0,代表空白地图。链表map的每一个元素,代表一个小方格。元素值为1时,代表方格为绿色通道。元素值为0时,代表方格为白色障碍。走迷宫17-4地图绘制原理走迷宫17-5地图绘制原理链表map第1-14个元素代表第一行方格,第15-28个元素代表第二行方格,依此类推。绘制地图时,除了根据鼠标光标位置绘制“通道”外,也要将相应方格对应的链表元素设置为1。数字地图如下图所示。第x行y列方格在链表中对应的元素是(x-1)*14+y,比如第2行2列方格在链表中对应的元素是(2-1)*14+2=16,其值是0,代表一个空白的障碍方格走迷宫17-5地图绘制原理走迷宫17-6地图绘制原理屏幕上的地图是显示给人看的,叫“视图”数字地图是程序判断、运行的依据,叫“数据”或“文档”如果希望程序运行效果和人的期望相同,则数字地图中数据所表达的含义必须和“视图”显示的效果一致走迷宫17-6地图绘制原理走迷宫17-7地图绘制原理当点击“重建地图”按钮后,执行右面代码作用是将小猫探索迷宫的标志变量Run设为0,小猫停止探索,删除地图map链表内容,重新插入140个0,清除界面全部画笔绘制内容,得到一个空白的地图。播放声音Meow目的是告诉用户按钮已经被点中走迷宫17-7地图绘制原理01234567891011121398765432100123456走迷宫17-8地图绘制原理右面代码的作用是绘制地图当按下鼠标时,根据鼠标位置计算应绘制哪一个方格(鼠标的x坐标-鼠标的x坐标除以30的余数)/30这是为了求得鼠标所在方格的整数列走迷宫17-8地图绘制原理走迷宫17-9地图绘制原理因为屏幕左边界x坐标为-240,为使求得列数为从左到右自0(第一列标号为0)开始,统一加8同样的原因,计算鼠标所在方格行数时因为鼠标下边界y坐标为-180,统一加6走迷宫17-9地图绘制原理走迷宫17-10当点击“探索迷宫”按钮后,执行右面代码作用是将pass链表初始化为140个0,表示地图上所有方格都没有探索过然后将Run设置为1,允许探索迷宫程序运行广播事件“探索迷宫”,触发探索迷宫程序运行走迷宫17-10当点击“探索迷宫”按钮后,执行右面代码走迷宫17-11角色“鱼”的代码作用是将小鱼移到地图右上角的方格,即第10行,第14列的方格,方格的编号从0开始,即行为0-9,列为0-13走迷宫17-11角色“鱼”的代码走迷宫17-12路径搜索算法变量cat_x,cat_y用于记录小猫当前所在方格的位置,cat_x表示所在列(0-13),cat_y表示所在行(0-9)LastStep表示小猫上一步所在的方格,用方格在map列表中的索引表示NextStep是一临时变量,表示小猫下一步可能进入的方格,用方格在map列表中的索引表示Direction代表小猫的前进方向,1-上,2-下,3-左,4-右走迷宫17-12路径搜索算法走迷宫17-13路径搜索算法链表map表示地图链表pass用于记录小猫探索过的方格,其结构和map相同,大小被初始化为140,每个元素对应地图上的一个方格曾经走过的方格对应元素设为1,一次也没有走过的方格对应元素设为0Path代表小猫从起点(左下角方格)为了达到终点(鱼所在右上角方格)探索走过的路径,其大小动态变化,小猫每走一步,经过的方格位置就被插入链表Path的头部(第一个元素)走迷宫17-13路径搜索算法走迷宫17-14路径搜索算法1.根据小猫当前位置,假设一个前进方向,比如向上,计算NextStep2.判断NextStep进入方格如果没有超越边界,且从未探索过,且不是来时刚走过的方格,则此假设方向可行,小猫进入NextStep所对应方格,将pass中NextStep对应元素设置为1,标志此方格已经走过,将NextStep添加到Path头部,路径向前延伸3.如果上述条件不成立,则判断下一个方向4.如果所有方向都不可行,说明此路不通。从Path中取出上一步走过的方格,回退到此方格,返回到步骤(1)。如果Path中已经为空,说明已经探索过所有可能达到的方格,仍然无法到达终点。探索过程结束,说“无路可走,游戏结束!”走迷宫17-14路径搜索算法19543212687101113Path:19543212687101113Path:走迷宫17-15具体程序实现时,先决定前进的方向,然后再前进,探索初始化及判断向上一步是否可行的代码如右走迷宫17-15具体程序实现时,先决定前进的方向,然后再走迷宫17-16其他方向的判断,同向上的判断方式相同,下面是所有方向都走不通后的处理代码走迷宫17-16其他方向的判断,同向上的判断方式相同,下走迷宫17-17根据前面决定的方向,前进一步的代码如下走迷宫17-17根据前面决定的方向,前进一步的代码如下练习编写坦克大战游戏链表实现数字地图,用0代表通道,1代表砖墙,2代表草地,3代表石墙等等自己绘制或上网查找坦克、砖墙、草地、石墙等图片,统一大小,作为构造地图的素材可开发两个程序,一个是地图编辑器,专门用作编辑地图使用;另一个是游戏程序,实现人机对战人控制坦克,保卫自己的基地,电脑进攻,消灭所有电脑坦克,基地不被损毁则可过关练习编写坦克大战游戏总结这节课我们学习了迷宫的绘制数字地图的使用路径的自动搜索总结这节课我们学习了本节目标这节课即我们即将学习迷宫的绘制数字地图的使用路径的自动搜索本节目标这节课即我们即将学习走迷宫17-1迷宫程序界面如右图所示点击“重建地图”,地图被擦除,用户通过点击鼠标或按着鼠标左键拖动鼠标来绘制地图绿色代表通道,小猫只能在通道上行走,不能走到白色的区域上面去点击“探索迷宫”,小猫自动在绘制完成的地图上寻找路径,直到吃到鱼或发现没有通到鱼的路径可走为止走迷宫17-1迷宫程序界面如右图所示走迷宫17-2程序中有5个角色,分别是小猫汤姆、绘制通道的绿色方块、“重建地图”按钮、鱼和“探索迷宫”按钮走迷宫17-2程序中有5个角色,分别是小猫汤姆、绘制通道的走迷宫17-3地图绘制原理将屏幕划出一个宽420高300的区域,然后将此区域分为宽30高30的小方格。这样的小方格有14列,10行,共计140个。“通道”角色是一个宽30高30的绿色方块。绘制地图时,判断鼠标按下时鼠标光标所处的位置落于哪个小方格中,然后将“通道”角色移至该方块的左下角,使用“图章”方法绘制一个方格走迷宫17-3地图绘制原理走迷宫17-4地图绘制原理为了易于程序判断,除了在屏幕上绘制地图,还要保存一幅“数字地图”。建立链表map,插入140个0,代表空白地图。链表map的每一个元素,代表一个小方格。元素值为1时,代表方格为绿色通道。元素值为0时,代表方格为白色障碍。走迷宫17-4地图绘制原理走迷宫17-5地图绘制原理链表map第1-14个元素代表第一行方格,第15-28个元素代表第二行方格,依此类推。绘制地图时,除了根据鼠标光标位置绘制“通道”外,也要将相应方格对应的链表元素设置为1。数字地图如下图所示。第x行y列方格在链表中对应的元素是(x-1)*14+y,比如第2行2列方格在链表中对应的元素是(2-1)*14+2=16,其值是0,代表一个空白的障碍方格走迷宫17-5地图绘制原理走迷宫17-6地图绘制原理屏幕上的地图是显示给人看的,叫“视图”数字地图是程序判断、运行的依据,叫“数据”或“文档”如果希望程序运行效果和人的期望相同,则数字地图中数据所表达的含义必须和“视图”显示的效果一致走迷宫17-6地图绘制原理走迷宫17-7地图绘制原理当点击“重建地图”按钮后,执行右面代码作用是将小猫探索迷宫的标志变量Run设为0,小猫停止探索,删除地图map链表内容,重新插入140个0,清除界面全部画笔绘制内容,得到一个空白的地图。播放声音Meow目的是告诉用户按钮已经被点中走迷宫17-7地图绘制原理01234567891011121398765432100123456走迷宫17-8地图绘制原理右面代码的作用是绘制地图当按下鼠标时,根据鼠标位置计算应绘制哪一个方格(鼠标的x坐标-鼠标的x坐标除以30的余数)/30这是为了求得鼠标所在方格的整数列走迷宫17-8地图绘制原理走迷宫17-9地图绘制原理因为屏幕左边界x坐标为-240,为使求得列数为从左到右自0(第一列标号为0)开始,统一加8同样的原因,计算鼠标所在方格行数时因为鼠标下边界y坐标为-180,统一加6走迷宫17-9地图绘制原理走迷宫17-10当点击“探索迷宫”按钮后,执行右面代码作用是将pass链表初始化为140个0,表示地图上所有方格都没有探索过然后将Run设置为1,允许探索迷宫程序运行广播事件“探索迷宫”,触发探索迷宫程序运行走迷宫17-10当点击“探索迷宫”按钮后,执行右面代码走迷宫17-11角色“鱼”的代码作用是将小鱼移到地图右上角的方格,即第10行,第14列的方格,方格的编号从0开始,即行为0-9,列为0-13走迷宫17-11角色“鱼”的代码走迷宫17-12路径搜索算法变量cat_x,cat_y用于记录小猫当前所在方格的位置,cat_x表示所在列(0-13),cat_y表示所在行(0-9)LastStep表示小猫上一步所在的方格,用方格在map列表中的索引表示NextStep是一临时变量,表示小猫下一步可能进入的方格,用方格在map列表中的索引表示Direction代表小猫的前进方向,1-上,2-下,3-左,4-右走迷宫17-12路径搜索算法走迷宫17-13路径搜索算法链表map表示地图链表pass用于记录小猫探索过的方格,其结构和map相同,大小被初始化为140,每个元素对应地图上的一个方格曾经走过的方格对应元素设为1,一次也没有走过的方格对应元素设为0Path代表小猫从起点(左下角方格)为了达到终点(鱼所在右上角方格)探索走过的路径,其大小动态变化,小猫每走一步,经过的方格位置就被插入链表Path的头部(第一个元素)走迷宫17-13路径搜索算法走迷宫17-14路径搜索算法1.根据小猫当前位置,假设一个前进方向,比如向上,计算NextStep2.判断NextStep进入方格如果没有超越边界,且从未探索过,且不是来时刚走过的方格,则此假设方向可行,小猫进入NextStep所对应方格,将pass中NextStep对应元素设置为1,标志此方格已经走过,将NextStep添加到Path头部,路径向前延伸3.如果上述条件不成立,则判断下一个方向4.如果所有方向都不可行,说明此路不通。从Pat
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 井下电泵作业工岗位流程优化考核试卷含答案
- 电机检修工QC管理知识考核试卷含答案
- 2025-2026学年好爸爸大班说课稿
- 半导体辅料制备工8S执行考核试卷含答案
- 天然气制乙炔装置操作工核心实操竞赛考核试卷含答案
- 2025-2026学年大班说课稿分享真快乐
- 2025-2026学年党旗的故事说课稿
- 河北省沧州市四校联考2025-2026学年高三上学期11月期中物理试题(含答案)
- 广西崇左市2026年八年级上学期语文期中试卷附答案
- 2026年质检技术服务行业商业模式研究报告及未来五至十年政策红利与合规路径
- 2026年保安员资格考试题库(含参考答案)
- 主体劳务扩大清包合同9篇
- 【方案】2026算电协同(智算中心)技术方案
- 2026年物业管理服务人员知识培训考试题库附答案
- 交通运输行业春季策略:中东变局下航运船舶展望海峡受限类比弹簧压缩重视释放后全板块弹性-
- 铝方通吊顶施工常见问题处理方案
- 物业中控外包合同
- 2026年上海市闵行区高三二模英语卷(含答案及解析)
- 经营服务费合同范本
- 早期维新思想课件
- 第十八届“振兴杯”全国青年职业技能大赛(钳工赛项)决赛试题库-下(判断题)
评论
0/150
提交评论