Scratch之自动走迷宫

来源 :电脑报 | 被引量 : 0次 | 上传用户:sabot
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  如何让程序自己走迷宫是一个挺深奥的问题,涉及生成迷宫的prim算法、深度优先算法,走迷宫的广度优先算法、深度优先算法等。不过那些都有一定难度,我们还是先从最简单的一种算法开始吧,这种自动走迷宫的算法其实是把自己当成盲人走迷宫。这就是“左手法则”,这种法则只针对有墙壁且出口在墙壁上的迷宫(如果出口在大厅中心的情况就不适用了),只要顺着墙壁走,都能走出去。因为出口和入口的墙壁都是闭合曲线,所以这种“法则”在这类迷宫中是通用的。不过“左手法则”的效率太低,只适用于小范围的固定迷宫,而大范围的迷宫用这种算法会耗费大量的时间。未来我也会和大家分享“深度优先”等算法和如何自动生成随机迷宫。



  最经典的“左(右)手法则”算法:在一张连通的迷宫图中我们用左右任意一只手一直摸着墙就一定可以走出这个迷宫,也称为绕墙走算法(或摸墙算法),是一种迷宫搜索的初级算法。左手法则的关键点:
  1. 走到墙边
  2. 监测左边是否有墙壁
  3. 监测前面是否有墙壁
  4. 左右转向
  下面我们把左手摸墙的走法用流程图表示出来,更加方便让大家理解。
  代码分析:
  程序以网上找到的一个简单迷宫为背景,迷宫墙壁为黑色。圆球角色Ball走迷宫,Bell铃铛为迷宫出口。
  我们需要自定义三个函数模块积木,对应左手法则的三个判断(走到墙边,判断左边是否有墙,判断前边是否有墙)。
  1. 走到墙边
  这个功能就是让角色一直沿着既定的方向前进,直到碰到墙壁。这里可以使用侦测中的“碰到颜色”积木来实现。
  2. 判断左边是否有墙



  根据流程图结合代码,要求角色每行动一步就要判断一次左边是否存在墙壁。在这个自定义函数中,我们还要定义一个“左边是否有墙”的变量,如果左边存在墙壁,就将这个变量设为1,否则这个变量值就是0(一直重复判断直到角色最终走出迷宫)。如何判断左边是否存在墙壁呢?我们可以让角色往左边移动一步,然后再侦测一下是否碰到了墙壁(在本例中,墙壁颜色是黑色的,可以使用“碰到颜色黑”作为检测条件)就可以了。当左移一步碰到墙壁,则说明左侧存在墙壁,如果没有碰到墙壁,则说明左边没有墙壁。
  因为左移动作只是为了做侦测,并不能真的移过去,所以在检测完毕后还要将角色进行复位。把移动的步数退回来,转过的角度也要转回来。
  3. 判断前方是否有墙



  这个功能和判断左边是否有墙的方法一致,也需要添加“前边是否有墙”变量,用“碰到颜色黑”為条件。当前进一步碰到墙壁,则说明前方存在墙壁,变量值为1,如果没有碰到墙壁,则说明左边没有墙壁,变量值为0。并退回到原处。
  接下来看分析主程序的代码部分,设置变量初始值为0,恢复角色初始位置,设置角色大小方向。走到墙边,然后开始进行角色移动过程的两种判断,重复执行直到角色到达终点也就是碰到Bell,结束循环。在循环的过程中先判断左边是否有墙壁,当左边没墙时向左转,且角色前进一步。这个前进移动非常重要,如果忘记写前进代码的话,会造成角色原地打转的Bug。当左边有墙时,才可以进行前方是否有墙壁的判断。如果前方存在墙壁,因为这时左边前面都有墙壁,我们只能右转,注意只是右转并没有前进。如果判断前方没有墙壁,那么此时就可以放心地前进一步。最终角色会一直沿自己左边的墙壁运动直到终点,走出迷宫。



  今天用最简单的左手法则算法完成了自动走迷宫的目标,对算法有了一点最基础的了解,在未来的时间里,我也会和大家分享深度优先算法和递归的算法,更快地走出迷宫。并学会自动生成随机迷宫地图。
其他文献
摘要:目的 了解预见性护理在有暴力行为的男性精神疾病患者护理中的应用价值。方法 对我院2012年3月至2014年3月收治的伴有暴力行为的男性精神疾病患者进行抽样,选取76例患者随机分成两组,对照组予以精神科常规护理干预,实验组推行预见性护理干预,观察两组临床护理效果。结果 实验组护理满意度(94.74%)明显高于对照组(78.95%),暴力行为次数(7例)显著低于对照组(17例),且住院时间及住院
期刊
很多推理小说的狂热者曾幻想过一场“完美犯罪”,比如《唐人街探案》里的秦风。准备好,进入犯罪现场  在推理小说大师创造的世界,罪犯巧妙的设计与侦探缜密的逻辑推理仿佛一场无声博弈。  柯南·道尔笔下的夏洛克·福尔摩斯擅长捕捉细微之处的蛛丝马迹,比如通过脚步声判断对方的着装,或者根据胡须中的烟灰辨别香烟来自哪家商店。贝克街B221号是罪犯无处可逃的黑洞;阿加莎·克里斯蒂笔下的罪犯惯用“毒杀”,波洛神探不
期刊
找到那一滴血  指纹只存在于指尖,你身上的每一个细胞里都有DNA,是男是女、今年多大了、有没有先天疾病,都清清楚楚地写在上面。只要罪犯不小心在现场留下点什么,好比说一根连着毛囊细胞的头发,一滴血,少许精液或者头皮屑。只要有细胞在,就有提取出DNA的可能性。在法医学领域有一个重要的职业——犯罪现场调查员(CSI)。或许你的法医启蒙正是来自那部同名美剧,但现实中的CSI更接地气——他们会出现于案发现场
期刊
迟到的AOD,氢OS有何不同?  首先给大家提前吃一颗定心丸:就我这几天的体验而言,几乎没有发生过APP闪退、异常发热、掉电快等等“友商”的开发者预览版常见的问题,绝大部分(理论上是所有,反正我没发现)功能都可以正常使用,这个版本的稳定性已经不错了。  由于本次升级无需“双清”操作,所以升级后手机内的资料也是可以保留的,即便如此,我们还是建议大家提前进行备份。  在氢OG沟通会上,一加花了近半的时
期刊
如何用Scratch绘制出彩虹呢?我们都知道彩虹有七种颜色,肯定要用画笔工具,但彩虹是由多条不同半径的同心圆组成,如何保证不同色带之间贴紧在一起呢?我将用两种方法来绘制彩虹,希望能给你启发,找到其他更好的方法。一、移动加旋转法  这种方法应该是最容易想到的方法,设置好画笔的粗细及颜色后,确定好起始位置,用每前进n步就旋转固定角度的方法先画出最外圈红色半圆,然后逐步调整内圈的起始位置和移动步长,保证
期刊
最近,微信动作频频,iOS版和安卓版都陆续迎来更新,在这次更新中,大家十分关注的“拍一拍”功能终于迎来了改进。  “拍一拍”功能刚上线时,大家对它是又爱又恨。因为“拍一拍”这个功能,连好几年都没人发过言的同学群、天天发鸡汤文却无人回应的家族群等等,都开始不同程度地“拍”成一片,为友情和亲情升了一把温。不过,对于一些还没搞清楚状况的朋友来说,拍一拍也带来了不少尴尬,比如本来只想点开一个陌生人的头像看
期刊
已經更新iOS13.6.1!很多小朋友还没有从iOS13.6的喜悦中缓过劲来,iOS13.6.1是否值得升级,当二哥发现苹果推送iOS13.6.1版本的系统立马就给手里的iPhone SE2进行了升级,给大家简单聊聊升级后的感受。  此次iOS新版本只有100多MB,以修复BUG为主,解决了导致部分显示屏色调偏绿的散热管理问题,以及可用存储空间不足时不需要的系统数据文件可能无法自动删除的问题。如果
期刊
那一年教室设立了读报角,报架上放着一份新鲜的《电脑报》;那一年单位的图书室,捧着《电脑报》阅读的你身后总有其他的身影,问你最新的计算机知识;那一年你第一次在计算机教室学习电脑课,心情无比的紧张;那一年你走进电脑城,手中紧紧握着《电脑报》,打算为自己配置一台个人计算机,心里满是兴奋,满是激动。  1992年,《电脑报》正式创刊。也是在这个时候,我们从相遇、相识、相知到相惜,一同在这个快速进步的时代,
期刊
荷马史诗与游戏  《伊利亚特》与《奥德赛》算是荷马史诗中最为著名的两个故事,一个涉及特洛伊战争,一个则是战争之后奥德赛的流浪与回归,二者都有着极高的文学价值。虽说要谈的是游戏,但是对于游戏的背景还是需要有所了解才行,从侧面来说也能了解到游戏所涉的内容是多么的宏大和辉煌。  游戏将涉及“特洛伊木马”这段历史直接搬上平台供玩家们体验,对玩家来说绝对是值得享受的。不过享受《全面战争传奇:特洛伊》(以下简
期刊
唯一获得国家药食同源认证的紫皮石斛  肺是人体的呼吸、造血器官,它受损不仅导致呼吸道疾病、脱发,让气色变得很差,还会引发各种隐疾,甚至致命。而老人、孩子、吸烟人群更是易得咽炎、支气管炎、肺炎,就连经常做饭的人,也会因为长期吸入油烟,肺受到的伤害甚至比吸烟还大。  当你的身体出现以下某种现象:胸闷气喘、干咳、鼻塞、易感冒、乏力、低热盗汗、掉发、皮肤干燥,说明你的肺已经不好了,一定要注意。本着养生要趁
期刊