设计迷宫教学设计 霍伟(精选4篇)
教师: 霍伟
教学目标
1、了解迷宫,感受迷宫文化的魅力。
2、培养对迷宫游戏的兴趣。
3、初步培养设计能力,学习绘制简单的迷宫。
4、在活动中体验动脑探究、合作创新的能力。学情分析
迷宫是结构复杂、道路难辨,进去后不容易找到出路的建筑物。是培养学生空间想象力的智力游戏,同时也是一种锻炼人智慧的游戏。教学内容是引导学生大胆想象与创造,从而绘画出富有想象力与趣味性的平面迷宫,借以释放学生对奥秘领域的好奇、探索之心。迷宫只能有一条正确的通道,应具主题、起点、终点、障碍物、岔路。重点难点
重点:学习绘制简单的迷宫。
难点:学生能够大胆的想象,从而设计出一幅富有情趣的迷宫图,完成个性化的设计。教学过程
一、游戏导入
1、提问讨论引出主题
师:同学们,你们见过迷宫么?你认识它吗?你会玩吗? 师:谁愿意向大家说一说你对迷宫有哪些了解?知道多少就说多少。
生:学生自由发言,谈一谈自己对迷宫的想法与见解。
师:我们现在来做个走迷宫的小游戏,比一比哪组能准确无误的走出迷宫。(分小组比赛,每组选派出1名代表来参加比赛。)师:通过比赛选出走迷宫第一的小组,(以掌声予以鼓励)。揭示主题:今天我们都来当一次设计师,来设计绘制迷宫。
二、传授新知识
1、了解迷宫
(1)、结合课件介绍迷宫的起源: 迷宫起源于古希腊,这就是古希腊最早的迷宫——米诺斯迷宫。和欧洲最早最著名的迷宫——汉普顿迷宫,位于英国伦敦。
(2)欣赏迷宫作品(课件展示)森林迷宫、滑雪场迷宫、花园迷宫、水上迷宫、螃蟹迷宫、动物园迷宫、蜂窝迷宫、蘑菇迷宫、草丛迷宫等。
2、分析迷宫图的设计方法
<1>、思考:
思考1:迷宫为什么会容易使人迷路呢?(小组讨论)
师生共同总结:迷宫道路弯弯曲曲,迷宫的路上还设计了许多让人迷惑的岔道和障碍物。
思考2:迷宫的构造有哪几部分组成?
<2>、师生共同讨论设计迷宫图的方法及步骤
(1)构思主题。
(2)用铅笔勾画路径的单线,定为迷宫的通道起点与终点。
(3)在单线的基础上再添画一些迷惑视线的岔路,注意道路的曲折变化与美观。
(4)将所有的单线修改为双线。
(5)在岔路上添画障碍物的位置,使之成为死路,并检查路线是否合理。
(6)添画相关的背景及景物、使画面具有一定的情趣。
三、学生作业
1、自己动手设计一幅有趣的迷宫图,主题要鲜明。
2、播放音乐,学生作画,教师巡回指导。
四、作品展示
请绘画完成的学生上前展示,其他同学说说都喜欢谁的作品,为什么喜欢?让设计者说说自己的设计理念及想法。最后请同学把自己设计的迷宫与同学说一说自己的设计思路。
五、课堂小结
迷宫机器人实际上是一个由微处理器控制的, 集感知、判断、行走功能于一体, 能够自动寻找最佳路径到达目的地的小型机器人。它可以在“迷宫”中自动感知并记忆迷宫地图, 通过一定的算法, 寻找一条最佳路径, 以最快的速度到达目的地。迷宫机器人走迷宫竞赛是一项综合性十分强的竞赛, 它涉及的学科包括了计算机学、机械学、电工学、嵌入式开发知识以及算法的实现等。迷宫路径设置是随机的, 竞赛难度较大, 极富挑战性。可以更好的培养学生的创新精神和提高学生的实践能力。
本文以山东省某年大学生机器人大赛题目为基本, 设计制作了一种迷宫机器人。
1比赛任务及比赛场地
1.1制作一个微型机器人, 在最短的时间内穿越迷宫到达终点, 并最优路径返回起始点。比赛总时间为15分钟。
1.2迷宫由8×8个18cm×18cm大小的正方形单元所组成 (如图1) 。迷宫的隔墙高5cm, 厚1.2cm, 因此两个隔墙所构成通道的实际距离为16.8cm。外墙将整个迷宫封闭。
1.3迷宫隔墙的侧面为白色, 顶部为红色。迷宫的地面为木质, 使用油漆漆成黑色。隔墙侧面和顶部的涂料能够反射红外线, 地板的涂料则能够吸收红外线。
1.4迷宫的起始单元可选设在迷宫四个角落之中的任何一个。终点在迷宫中央5、在每个单元的四角可以插上一个小立柱, 其截面为正方形。立柱长1.2cm, 宽1.2cm, 高5cm。小立柱所处的位置称为“格点”。除了终点区域的格点外, 每个格点至少要与一面隔墙相接触。
2总体设计与硬件实现
迷宫机器人主要解决的问题:
1) 感知外界环境, 用一定的算法使机器人选择可以前进的路径, 并记忆走过的路径。
2) 环境测试, 当机器人将要发生触碰时, 能修正微调机器人前进方向。
3) 在完成从起始点到达终点的前提下, 尽量优化机器人运行轨迹。
根据以上几个问题设计出迷宫机器人的总体设计框图 (如图2) 。
本机器人总体设计成圆形结构, 以使得机器人在迷宫中运转自如。降低触碰墙壁的可能。 (如图3)
传感器模块进行环境测试, 感知外界环境, 为路径算法提供依据。本设计选用5对光电传感器进行环境测量。其安装方式如图3所示, 各传感器调整好适合的测量距离。前、左、右三个传感器负责感知三个方向的障碍物 (即墙壁) 。左前、右前两个传感器负责防止触碰, 调整修正机器人的前进方向。
控制芯片负责接收传感器传来的信号, 并根据一定的算法, 确定下一步的行动指令。同时记忆路径并计算最佳路径。本设计采用常用的单片机芯片AT89S52来进行算法计算并发出各种控制指令。
电机驱动模块接收并执行行动指令。本设计采用育松电子28BYJ-48 5VDC步进电机, 并带动两个同轴轮。选用步进电机可以对机器人每个时刻的位置及行进的距离进行较好的控制, 并具有较高的精确度, 更好的完成各项任务。当两个电机一正一反转动时可实现前进或后退动作, 两个电机都正传或都反转时可完成原地左转或原地右转动作。
电源模块负责提供机器人需要的电能源, 本设计主要模块都是5VDC, 所以采用三节5号充电电池供电即可。
人机交互模块主要为人控制机器人的开启停止等指令提供接口。
机器人安装一个万向轮用于支持车体, 并能使转动灵活。
3程序与算法设计
最优路径必须要求把迷宫所有单元格全部搜索一次, 但每场竞赛只有15分钟的时间, 因此是不可能的。所以只探测迷宫的一部分, 从中找出次最佳路径。
3.1机器人基本动作
左微调、右微调:当左前 (右前) 传感器检测到障碍时, 机器人原地右转 (左转) 直到检测不到检测不到障碍信号。左右微调程序贯穿机器人探测迷宫的全过程, 防止触碰墙壁。
原地左转900、原地右转900、原地掉头1800:这几个动作为前进道下一个做准备。
前进一格:机器人从一个单元格前进到下一个单元格。通过计算并依据步进电机每一步转过的角度和轮的直径可精确控制机器人转过的角度和前进的距离。
3.2机器人程序设计流程 (图4)
3.2.1判断前左右传感器选择下一步行动方向
机器人所处的第一个位置设定为坐标起始点 (0, 0) 开始规则设定为右手规则 (目的是让机器人往右侧行驶) (0代表有障碍, 1代表无障碍)
3.2.2按选择好的规则及下一步方向执行, , 并按调整好后的方向机器人前进到下一格。
同时记忆转过的方向 (用i、j、k、l分别作为原地左转900、原地右转900、原地不动、原地掉头1800四个转向标志。当相应转向发生时, 对应的标志记为1, 其余三个清零。)
3.2.3调整并记忆机器人的车体方向及当前所在单元格的坐标 (方向规则见图5) 。
3.2.4最优路径识别记忆。由于比赛时间限制, 本机器人仅仅探测部分迷宫区域, 所以这里的最优路径仅仅是探测部分的最优路径, 或者叫最佳路径。
用数组a[N]记忆每一个走过的单元格的地址, 一个地址用一个字节来记忆存储, 前四位记忆x, 后四位记忆y。当后续走过的单元格和前面走过的单元格地址相同时, 删除相同地址之间的单元格记忆数据。例如图5走过的地址数组数据为
则实际数组记忆为
3.2.5规则调整
机器人的最终目的是进入目标区域, 当贴近目标区域时, 这时应更改左右手规则, 如果不变, 机器人将围绕迷宫外围, 而永远无法到达目标区域。左右手规则变更条件为当机器人进入其中的任何一个单元格时, 右手规则变为左手规则。如图5M单元格, 在之前走过是右手规则, M格以后变更为左手规则,
3.2.6到达目的地的判断。当车体所在单元格坐标为[3, ]3[3, 4][4, 3][4, 4]时, 说明此时机器人已达目的地。为返回初始地点做准备
3.2.7返回初始点
根据最优路径记忆数组记录的数据, 机器人按照数组记忆的单元格返回起始点。当数组记忆的相邻单元格的x坐标相同, y坐标a[i+1]比a[i]大1时, 通过机器人旋转至3方向前进一格;当x坐标相同, y坐标a[i+1]比a[i]小1时, 通过机器人旋转至1方向前进一格;当y坐标相同, x坐标a[i+1]比a[i]大1时, 通过机器人旋转至2方向前进一格;当y坐标相同, x坐标a[i+1]比a[i]小1时, 通过机器人旋转至0方向前进一格。直至x, y坐标都到达[0, 0], 机器人返回到初始位置。
4结论
本文详细介绍了一种迷宫机器人的设计与实现, 实践表明该设计基本满足迷宫竞赛的要求。迷宫机器人的设计与算法实现方法有很多, 本文仅针对8*8迷宫提出了一种机器人的设计实现方法, 不当之处请批评指正。
参考文献
[1]张新宜, 一种电脑鼠走迷宫的算法[J].单片机与嵌入式系统应用, 2007, 05:84-85.
教学目标:
1、能大胆想像与创造,运用多种方法表现出一个趣味的迷宫游戏。
2、通过探索迷宫,培养学生学习的兴趣,提高学生的专注力,加强耐心和毅力,引导学生对事物整体与局部的关系进行初步认识。让学生能够排除干扰,抓住关键,解决问题。
教学重点难点:
分析迷宫的结构,寻找破解迷宫的方法。
能大胆想像与创造,运用多种方法设计趣味性的迷宫游戏。
教学过程:
(一)情景导入
苦瓜大王要苦化月球,喜洋洋为了拯救月球必须找到甜甜树。下面我们来看看喜洋洋在寻找甜甜树的过程中遇到了哪些难关吧?(播放视频)原来喜洋洋的爸爸妈妈在他们的实验室外面设置了重重难关,其中第一关便是闯迷宫,喜洋洋将面对怎样的迷宫,接受哪些挑战,最后如何顺利的通过迷宫,找到甜甜树?今天将由同学们来担任这个影片的导演和制作人。
要成为这个游戏的导演,我们首先要来补习一下迷宫的相关知识吧!
(二)了解迷宫的相关知识 边播放幻灯片边介绍古今中外的迷宫
后来有人仿照这种迷宫建筑创造了平面的迷宫图,就形成了走迷宫的游戏。同学们以前玩的迷宫游戏是怎样的?
(三)分解迷宫图的设计方法 出示幻灯片:各种各样的迷宫设计图
平面的迷宫图主要有两种。一种是由各种长长短短、曲直不同的线条围隔而成的格局图;一种是画面不仅有曲折的路线,而且还配有相应的背景。它既是一个迷宫,也是一幅漂亮的风景画或者场景画。
1、比较各种迷宫图,说说你更喜欢哪种形式的图。
2、迷宫图的构成:通过五张不同迷宫图片的对比分析,了解好的迷宫图需要有:起点与终点;复杂的路径(通路、岔路、死路);障碍物、相关背景;主题。
3、学生讨论设计迷宫图:(1)、构思主题,设计喜洋洋寻找甜甜树的过程中经历的迷宫会是怎样的呢?(2)、选择舞台,用画笔勾画路径单线,暂定为迷宫的唯一通道。(3)、在单线的基础上再添画一些迷惑视线的岔路。注意道路的曲折。
(4)、在岔道上确定障碍物的位置,使之成为死路,并检查路线的确定是否合理。(5)、添画相关景物、障碍物和背景,使画面具有一定意境和情趣。(6)、给画面上色,注意路径的颜色与背景要有对比。课后作业:
迷宫游戏设计目的是训练人的思维能力, 为了解决玩家在等公交车, 放松休息, 在咖啡厅等悠闲时间无聊的问题, 既不占用工作时间, 又可以给玩家带来乐趣。游戏更是设计了众多关卡, 随着关卡的增加, 游戏难度会逐渐增加, 让玩家可以尽情享受游戏的乐趣。
二、需求分析
本游戏设计是单机类迷宫闯关小游戏, 相比于电脑版的闯关类迷宫类小游戏, 在操作方面更加的简洁方便, 画面更加的明了。为了保证游戏的流畅性, 游戏在计算步骤方面运用了不算太过于冗长的代码, 但同时有保证了游戏的乐趣性。在整个游戏中, 实现以下功能。
1、进入游戏界面, 出现游戏介绍和游戏开始的选项;
2、游戏进行时, 可以选择返回选项;
3、当迷宫人物路线选择错误, 人物可以自动回到起点;
4、玩家可以随意游戏的关卡, 不会被限制于固定关卡;
5、游戏关卡的排列, 确保排列格式为蛇形排列;
6、脚印图形的嵌入, 当人物进入出口时, 界面自动跳转为游戏的关卡选择界面;
7、设计每张图形的路线, 从第一关开始逐渐加大游戏的难度;
8、当游戏进入或者退出关卡时, 切换界面的方式的选择为切入;
9、当人物选择路线的方向固定时, 游戏自动控制人物走到方向选择路口, 优化游戏操作。
三、系统主要流程
如图1。
四、系统主要模块
主视图初始化模块:创建并添加游戏视图, 添加游戏关卡的选择视图, 通关关卡视图, 返回界面选择视图。
迷宫初始化模块:清空人物相应位置的信息, 将地图上面的人物位置移动到初始化位置。
迷宫关卡选择模块;选择游戏的关卡, 一共40关迷宫, 玩家可以自由选择迷宫的关卡, 突显游戏的高度自由。
游戏介绍模块:游戏开始时, 玩家可以通过游戏简介加快对游戏的了解, 以便玩家可以尽快的上手游戏。
判断游戏通过模块:玩家通过自己的计算步骤, 并且走入终点, 该模块通过判断玩家控制的人物是否到达终点来决定是否通过关卡。
返回关卡选择模块:当玩家未通过此关卡时, 玩家可以选择返回, 返回到游戏关卡选择界面, 重新选择游戏其他关卡进行游戏。
五、算法总体概况
A* (A-Star) 算法是一种静态路网中求解最短路径最有效的直接搜索方法。估价值与实际值越接近, 估价函数取得就越好。例如对于几何路网来说, 可以取两节点间欧几理德距离 (直线距离) 做为估价值, 即:f=g (n) +sqrt ( (dx-nx) * (dx-nx) + (dy-ny) * (dy-ny) ) ;这样估价函数f在g值一定的情况下, 会或多或少的受估价值h的制约, 节点距目标点近, h值小, f值相对就小, 能保证最短路的搜索向终点的方向进行。
通过使用A* 算法实现将人物移动到指定的位置, 如果路径不存在, 则无法移动。因为这里A* 寻路算法是有个概念的, 就是有个路径最短的计算方法:f=g+h, 简单的讲就是这个节点到达目的节点的距离f等于这个节点周围的一个节点到达这个节点的距离g值再加上周围节点到达目的节点的距离h值。
六、A* 寻路算法分析
寻路的第一步是简化成容易控制的搜索区域。怎么处理要根据游戏来决定了。例如, 我们可以将搜索区域划分成像素点, 但是这样的划分粒度对于我们这款基于方块的游戏来说太高了。作为代替, 我们使用方块 (一个正方形) 作为寻路算法的单元。其他的形状类型也是可能的 (比如三角形或者六边形) , 但是正方形是最简单并且最适合我们需求的。
像那样去划分, 我们的搜索区域可以简单的用一个地图大小的二维数组去表示。所以如果是25*25方块大小的地图, 我们的搜索区域将会是一个有625个正方形的数组。 如果我们把地图划分成像素点, 搜索区域就是一个有640, 000个正方形的数组了 (一个方块是32*32像素) 。我们将会给每个方块一个G+H和值。G是从开始点A到当前方块的移动量。所以从开始点A到相邻小方块的移动量为1, 该值会随着离开始点越来越远而增大。H是从当前方块到目标点 (我们把它称为点B, 代表骨头!) 的移动量估算值。这个常被称为探视, 因为我们不确定移动量是多少 – 仅仅是一个估算值。
G是从开始点A到达当前方块的移动量。为了计算出G的值, 我们需要从它的前继 (上一个方块) 获取, 然后加1。所以, 每个方块的G值代表了从点A到该方块所形成路径的总移动量。
H值是从当前方块到终点的移动量估算值 (在本游戏中是指方块的数目) 。移动量估算值离真实值越接近, 最终的路径会更加精确。如果估算值停止作用, 很可能生成出来的路径不会是最短的 (但是它可能是接近的) 。为了让它更简单, 我们将使用“曼哈顿距离方法” (也叫“曼哈顿长” 或者“城市街区距离”) , 它只是计算出距离点B, 剩下的水平和垂直的方块数量, 略去了障碍物或者不同陆地类型的数量。
七、算法关键代码实现
方法会返回一个数组, 里面包含了地图周围的四个节点对象。依次取出地图四周的节点对象, 因为是通过点击地图后地图和人才移动的, 但是需要检查地图四个方向上是否有人, 移动的方向即人面向的方向, 如果有则判断哪个节点对象的位置是人物按钮。
第一行意思把当前节点NSButton Node对象的属性上层按钮赋给一个按钮引用对象。第二行把下一个NSButton N- ode对象节点的属性下层按钮也赋给一个按钮引用对象。 来判断这两个按钮是否是存在的。
假如当前节点的上层按钮属性值是存在的而且下一个节点的下层按钮属性值也是存在的, 则可以进行两个节点的按钮属性值交换的操作以实现按钮移动的效果。下一个按钮的frame值赋值给当前节点对象的上层按钮的frame属性是为了使得将one Button移动到next Button的位置时使其位置和大小保持一致。next Button的tag值也赋给one B- utton是因为tag值标识了按钮所在的位置, 可以通过获取按钮的tag值来判断按钮的位置在第几行第几列, 根据这个行列值就可以到NSButton Node节点对象数组中获取拥有这个按钮的NSButton Node对象, 因为按钮的位置发生变化了所以我们也要更新它的tag值使其与新位置保存一致。 设置这个按钮在当前父视图上前置显示。
将当前节点的当前状态值复制另存是为了赋给下一个节点的当前状态值属性, 因为这个状态值标识了一个节点对象它所控制的位置给人看到的按钮是何种类型的。地图按钮或者是人物按钮移动位置后就不在当前节点上面了, 所以要它的属性map Button赋值为空。由于当前节点对象的map Button按钮属性值已为空, 那么当前节点对象所控制位置显示的按钮是它的属性button值, 也就是就一层按钮了, 所以这个节点对象用来标识当前显示的是何种类型的按钮的属性current State值, 要恢复成它之前的状态值, 而这个状态值就保存在它的属性last State中。由于节点原来的状态还原了, 所以将属性last State值赋值为一开始初始化时的枚举值NOSTATE。
把这个引用上一个节点的用于显示在上层的按钮对象赋给下一个节点的用于显示的上层按钮属性。因为下一个节点对象所控制位置显示的按钮发生变化, 所以要将它自己原来的状态值保存在属性last State中, 以便人物或者是地图移走后, 还能够恢复成原来的状态。因为这个节点对象所控制位置显示在视图上的按钮发生了变化, 所以它相应标识的属性current State也要设置成对应的属性值。
第一个if是指, 如果测试节点的周围的这个节点对象已经在open Ary数组中了, 就判断在这个测试节点的基础上再前进一步到这个属于周围节点中的这个节点的g值是否比它原来算的g值是否要小, 如果要小则表示原来要走的节点通过这个测试节点走过去g值更小, 距离更加的短, 由于已经在开发数组中的节点的g值发生了改变则需要建造堆, 也就是对开放数组中的节点进行针对g值的重新排序, 使得首节点是g值最小的节点
设置父节点的目的是为了在寻找的测试的节点就是目标节点后通过目标节点的父节点可以进行递归到开始的人的节点, 这样做的目的是为了将从人的位置通向目标节点的路径, 也就是顺序排列的节点都找出来, 在通过倒序后的路径就可以走到目标节点位置的路径了。
节点发生了变化, 需要重新按照f值给open Ary数组的节点对象进行最小二叉堆的排序如果这个周围的节点对象不在open Ary数组里面, 就把它加入到open Ary数组中, 如果此时open Ary数组中元素个数是三个或者是三个以上, 则进行按照节点对象的属性f值最小二叉堆的排序。也就是使得open Ary数组中的首元素的f值是最小的, 最小的f值节点对象优先作为最短路径构成选择。
八、结束语
游戏本身是一款可以在i Pad运行的迷宫类闯关类小游戏, 在游戏打开后直接进入游戏主界面, 用户这时可以两个选项:进入进一步的关卡选择或者看游戏简介。当玩家选择关卡时玩家进入选定关卡, 继而指挥角色从起点穿过层层障碍到达出口。玩家在这个过程也可以进行游戏的退出, 进而可以选择新的关卡, 开始新一轮的游戏。
本文在详细论述了基于Cocos2d的迷宫类闯关类小游戏, 介绍了系统的主要模块和算法分析以及算法关键代码实现, 最后对该游戏平台进行了试运行。此系统具有一定的实用性和应用前景。
参考文献
[1][美]Rob Napier.Mugunth Kumar, 库玛.i OS编程实战[M].人民邮电出版社, 2014.[2][美]赫乐嘎斯, 康威.i OS编程 (第4版) [M].华中科技大学出版社, 2015.
【设计迷宫教学设计 霍伟】推荐阅读:
精选迷宫大班教案优秀06-09
中班数学游戏:走迷宫09-06
展示设计设计设计报告12-03
设计风格总结,家居设计,装修设计11-13
招贴设计教学设计07-24
课程设计设计感想09-30
《系统与设计》教学设计09-13
欢庆教学设计设计意图10-02
界面交互设计教学设计10-08