Karel机器人能力拓展训练课程设计--山崖探险
- 格式:doc
- 大小:408.02 KB
- 文档页数:17
《机器人探险》作业设计方案(第一课时)一、作业目标1. 培养学生对机器人技术的基本认知,激发其对机器人技术的兴趣。
2. 通过编程实践活动,初步掌握机器人编程的基本概念和操作方法。
3. 强化学生的逻辑思维能力和解决问题的能力。
二、作业内容1. 理论学习学生需认真阅读《机器人探险》课程的第一章内容,并掌握其中的核心知识点。
这包括机器人的基本组成、编程语言的初步了解以及与机器人探险相关的基本原理等。
2. 编程实践结合教材和网上教学资源,学生需要完成一个简单的机器人编程任务。
任务内容为:编写一段程序,使机器人能够在虚拟环境中完成简单的探险任务,如避开障碍物、寻找目标等。
3. 案例分析选择一至两个机器人探险的案例进行深入研究。
了解其应用场景、实现方法和可能的优化措施,撰写分析报告并说明理由。
案例可来自现实中的成功应用或教学案例库。
三、作业要求1. 理论学习部分需全面掌握,重点内容需有笔记记录。
2. 编程实践部分需独立完成,并确保程序的正确性和可执行性。
3. 案例分析需结合实际,分析深入,报告条理清晰,逻辑性强。
4. 所有作业需在规定时间内提交,并保持字迹清晰、格式规范。
5. 鼓励学生利用网络资源进行自主学习和探索,但需注明引用来源。
四、作业评价1. 理论学习部分评价标准:知识点的掌握程度、笔记的完整性和条理性。
2. 编程实践部分评价标准:程序的正确性、执行效果及创意性。
3. 案例分析报告评价标准:分析的深度、报告的逻辑性和条理性、引用的准确性等。
4. 综合评价学生作业的完成度和质量,给予相应的成绩和反馈意见。
五、作业反馈1. 教师将对每位学生的作业进行认真批改,给出详细的评语和改进意见。
2. 对于普遍存在的问题,将在课堂上进行集中讲解和指导。
3. 鼓励学生之间互相交流学习,分享编程经验和案例分析心得。
4. 将优秀作业进行展示和表扬,激励学生积极投入信息技术课程的学习。
通过以上作业设计方案,旨在通过多方面的作业内容,全面提高学生的信息技术素养和综合能力。
《机器人探险》作业设计方案(第一课时)一、作业目标本节课的作业旨在帮助学生掌握机器人探险的基本概念和操作技能,培养他们的创新思维和解决问题的能力。
通过完成作业,学生将能够:1. 了解机器人的基本结构和功能;2. 熟悉机器人探险的程序设计和调试方法;3. 学会解决探险过程中遇到的问题。
二、作业内容1. 制作一份简单的机器人探险程序。
程序要求:机器人能够自动导航,根据指令完成指定的任务,如找到宝藏、避开障碍物等。
学生需要使用Scratch或其他编程软件编写程序,并调试运行。
2. 小组合作设计一个机器人探险任务。
任务要求:学生以小组为单位,设计一个机器人探险任务,包括任务目标、路线规划、障碍设置等。
任务完成后,小组需向全班展示并解释任务设计思路和实现过程。
3. 问题解决。
学生在探险过程中可能会遇到各种问题,如机器人失灵、电量不足等。
教师会给出一些常见问题,如:如何判断机器人故障部位?如何给机器人充电?请学生通过查阅资料、小组讨论等方式解决这些问题,并在课堂上分享解决思路和过程。
三、作业要求1. 独立完成作业:每个学生需独立完成各自的作业任务,培养独立思考和解决问题的能力。
2. 团队合作:小组合作完成设计任务时,学生需积极参与讨论,共同解决问题,培养团队合作精神。
3. 提交作业:每个学生需将作业成果(程序、任务设计文档等)提交给教师,以便教师进行评价。
4. 反馈与调整:教师将对学生的作业成果进行评价,并根据反馈结果对课程内容进行适当调整,以满足学生的学习需求。
四、作业评价1. 程序评价:教师将对学生的编程成果进行评价,关注程序的逻辑是否清晰、功能是否完善、运行是否稳定等。
2. 任务设计评价:教师将根据任务的目标、路线、障碍设置等进行评价,关注任务设计的合理性和创新性。
3. 问题解决评价:教师将根据学生解决问题的思路和方法进行评价,关注学生是否能够运用所学知识解决实际问题。
4. 团队合作评价:教师将根据小组完成任务的情况进行评价,关注学生是否积极参与讨论、共同解决问题等。
一、教学目标1. 知识与技能:(1)了解机器人的基本组成和功能;(2)掌握机器人编程和操作方法;(3)学会利用机器人进行探险活动。
2. 过程与方法:(1)通过观察、讨论、实践等方式,培养学生的探究能力;(2)通过团队合作,提高学生的沟通协作能力;(3)通过问题解决,培养学生的创新思维。
3. 情感态度与价值观:(1)激发学生对机器人技术的兴趣;(2)培养学生热爱科学、勇于探索的精神;(3)培养学生尊重他人、团结协作的品质。
二、教学内容1. 机器人基本知识:机器人的定义、组成、分类、功能等;2. 机器人编程:编程语言、编程环境、编程步骤等;3. 机器人操作:机器人遥控、自动控制、任务执行等;4. 机器人探险:探险任务设计、探险路线规划、探险数据采集等。
三、教学过程1. 导入新课(1)通过展示机器人视频或图片,激发学生的学习兴趣;(2)简要介绍机器人探险活动的意义和目标。
2. 教学内容讲解(1)讲解机器人基本知识,让学生了解机器人的组成和功能;(2)介绍机器人编程语言和编程环境,让学生掌握编程步骤;(3)讲解机器人操作方法,让学生了解如何控制机器人执行任务。
3. 实践操作(1)分组进行机器人编程练习,让学生熟悉编程过程;(2)进行机器人操作练习,让学生掌握遥控、自动控制等技能;(3)进行机器人探险任务设计,让学生学会规划探险路线和数据采集。
4. 课堂讨论(1)讨论机器人探险过程中可能遇到的问题及解决方案;(2)分享探险经验,交流学习心得。
5. 总结与反思(1)总结本节课所学内容,强调重点和难点;(2)引导学生反思自己在探险过程中的表现,提出改进措施。
四、教学评价1. 评价方式:课堂表现、实践操作、探险任务完成情况;2. 评价标准:(1)知识掌握程度:对机器人基本知识、编程、操作等方面的掌握;(2)实践操作能力:机器人编程、操作、探险任务完成情况;(3)团队协作能力:在探险过程中的沟通协作表现;(4)创新思维:在探险任务设计、问题解决等方面的创新表现。
《机器人探险》作业设计方案(第一课时)一、作业目标本次作业旨在让学生掌握使用机器人控制器的基本操作,熟悉机器人的移动、旋转等基本动作,通过探索式学习,提高学生的实践操作能力和创新思维能力。
二、作业内容1. 操作机器人控制器,让机器人完成指定的移动和旋转动作,如前进、后退、左转、右转等。
2. 引导学生自主设计一些简单的任务,如躲避障碍物、寻线行走等,并实现这些任务。
3. 鼓励学生尝试使用不同的传感器和控制方法,如超声波传感器、红外线传感器等,以提高机器人的智能化程度。
4. 观察并记录机器人在不同环境下的表现,如光线强弱、地面材质等,以便进一步优化机器人的性能。
三、作业要求1. 学生在完成作业时,需要按照规定步骤和操作方法进行,确保机器人的安全和稳定。
2. 鼓励学生发挥自己的想象力和创造力,设计出有特色的任务和动作,培养创新思维。
3. 要求学生记录每次作业的过程和结果,以便总结经验和发现问题。
4. 提倡合作学习和小组讨论,鼓励学生相互交流和帮助,共同提高。
四、作业评价1. 评价标准:学生完成作业的情况、任务完成的质量、创新思维的表现等方面进行综合评价。
2. 评价方式:采用学生自评、小组互评和教师点评相结合的方式,确保评价的公正性和准确性。
3. 评价结果:对于表现优秀的学生和个人,给予一定的奖励和鼓励,以提高学生的学习积极性和自信心。
五、作业反馈1. 学生提交作业后,教师需要及时查看和分析学生的完成情况,发现问题并及时反馈。
2. 对于普遍存在的问题和困难,教师需要组织集中讲解和指导,帮助学生解决实际问题。
3. 鼓励学生提出自己的意见和建议,以便教师不断改进教学方案和措施,提高教学质量。
4. 定期收集学生对课程的反馈意见,以便及时调整课程内容和形式,满足学生的学习需求。
通过本次作业,学生可以进一步掌握机器人控制器的操作技巧,熟悉机器人的基本动作,同时也可以培养他们的创新思维和实践能力。
在评价和反馈的过程中,教师需要注重学生的个体差异和进步情况,给予适当的鼓励和支持,帮助他们更好地发挥自己的潜力。
《机器人探险》作业设计方案(第一课时)一、作业目标本课时作业设计的目标是:使学生能够了解机器人的基本概念,熟悉Scratch编程软件的操作界面及常用指令;能够利用Scratch完成简单的编程任务,通过编程控制机器人进行简单的动作。
二、作业内容1. 机器人基础知识学习学生需通过课本、网络资源或教师提供的视频资料,了解机器人的定义、发展历程及基本功能。
并掌握Scratch编程软件的基本操作,包括界面布局、脚本编写、角色管理等。
2. 任务式学习实践结合《机器人探险》课程第一阶段的学习内容,设计一个简单的冒险场景。
在这个场景中,学生需利用Scratch软件中的指令块编写脚本,使机器人能够执行如下动作:前进、后退、左转、右转、跳跃等。
要求学生在完成任务过程中,能自主思考如何编写脚本实现这些动作。
3. 创作故事情节学生根据所学知识,结合个人创意,创作一个以机器人探险为主题的小故事。
在故事中设定至少两个场景,并为每个场景设定合理的角色行为与故事情节,让机器人在冒险中扮演关键角色。
三、作业要求1. 学生应独立查阅资料、了解机器人的概念与Scratch软件操作,但同时也要主动向同学或老师提问。
2. 学生在编写脚本时,应遵循“模块化”原则,将不同的动作指令分别放置于不同的脚本中,便于管理和修改。
3. 故事创作要具有连贯性,场景与场景之间要有逻辑联系,机器人角色的行为应符合故事情节发展需要。
4. 学生在完成作业后,需对作品进行自评和互评,总结自己在完成任务过程中的收获与不足。
四、作业评价1. 教师根据学生完成的作品进行评分,评分标准包括机器人动作指令的准确性、故事情节的连贯性及创意性等。
2. 同学之间进行互评,互相指出彼此作品中的优点与不足,并给出改进建议。
3. 教师根据学生的自评和互评结果,给出综合评价及改进意见。
五、作业反馈1. 教师将学生的作品在课堂上进行展示,并针对每个作品进行点评。
2. 学生根据教师的点评及同学的建议,对作品进行修改和完善。
《机器人探险》作业设计方案(第一课时)一、作业目标通过本次作业,学生将能够:1. 了解并掌握机器人的基本操作方法;2. 熟悉机器人的移动、转向等基本控制;3. 培养动手实践和解决问题的能力。
二、作业内容1. 基础操作练习:学生需按照教师提供的操作指南,使用机器人进行移动、转向等基本操作,并完成指定的简单任务。
任务内容包括但不限于:机器人从起点到终点的往返、绕过障碍物等。
2. 问题解决练习:学生需要根据实际情况,对机器人进行合理调整,完成复杂的任务。
例如,在特定的迷宫场景中,学生需要调整机器人的速度、方向等参数,以最快速度走出迷宫。
3. 小组合作:学生可分组进行机器人探险活动,共同设计探险路线,并协同完成探险任务。
通过小组合作,培养学生的团队协作能力和沟通能力。
三、作业要求1. 作业应在规定时间内完成,并提交操作记录截图或视频;2. 作业过程中,学生应严格按照操作指南进行,不得随意更改机器人参数或程序;3. 提交的作业应清晰、准确地反映学生的操作过程和成果;4. 小组合作的作业,每个小组需指定一名组长,负责协调组内分工和合作。
四、作业评价1. 教师根据学生的操作记录截图或视频,对学生的作业进行评价;2. 对于问题解决和小组合作的作业,教师还需关注学生的协作能力、问题解决能力等方面;3. 评价标准包括但不限于:操作正确性、任务完成情况、团队协作情况等。
五、作业反馈1. 学生提交作业后,教师将向学生反馈作业评价结果,指出优点和不足,并提供改进建议;2. 学生可根据反馈结果,对自己的操作进行修正和提升;3. 学生也可向教师提出疑问或建议,以便教师更好地改进教学。
作业设计方案(第二课时)一、作业目标通过本次作业,学生将进一步掌握机器人探险的相关知识,包括机器人的移动、避障、目标识别等基本操作,并能够运用所学知识解决实际问题。
同时,学生将通过实践操作,提高团队协作和问题解决能力。
二、作业内容1. 小组任务:学生将被分成若干小组,每个小组需设计并完成一个机器人探险任务。
《机器人探险》作业设计方案(第一课时)一、作业目标通过本次作业,学生将掌握机器人的基本操作技能,理解机器人探险的概念,提升实际操作和问题解决能力。
二、作业内容1. 操作机器人完成基本任务:学生需要使用机器人完成指定任务,如捡取物品、移动障碍物等。
任务难度可以根据学生掌握情况进行调整。
2. 探索环境:学生需要使用机器人对指定环境进行探索,如寻找特定物品、避开障碍物等。
教师可根据实际情况设计不同的场景供学生探索。
3. 团队协作:学生需要与同伴一起操作机器人完成任务,培养团队合作和沟通协调能力。
三、作业要求1. 独立完成:学生需独立完成作业,如有困难可参考教师提供的指导或与同学讨论。
2. 记录问题:学生需记录在作业过程中遇到的问题,以便在作业评价时提供给教师。
3. 按时提交:学生需在规定时间内提交作业,以便教师及时评价。
四、作业评价1. 完成情况:评价学生是否按照要求完成作业,包括操作机器人完成任务、探索环境和团队协作等方面。
2. 问题解决能力:评价学生在解决问题过程中是否能够独立思考、与同伴合作,共同寻找解决方案。
3. 创新性:评价学生在完成任务过程中是否有创新思维,能否提出新颖的想法和解决方案。
4. 反馈与改进:根据学生的作业情况,教师需要及时反馈和指导,帮助学生改进不足之处,提高操作技能和问题解决能力。
五、作业反馈1. 学生反馈:学生在提交作业后,教师需要及时给予反馈和指导,帮助学生更好地理解和掌握相关知识技能。
2. 小组反馈:在小组协作完成任务的过程中,小组成员之间需要互相帮助、互相学习,共同提高。
小组长可以向教师反馈小组内成员的作业完成情况和问题,以便教师更好地了解学生的学习情况,及时给予指导和帮助。
3. 教师反思:教师在评价学生作业的过程中,也需要反思自己的教学方式和方法,不断改进和提高教学质量。
通过本次作业,学生将能够更好地掌握机器人的基本操作技能,理解机器人探险的概念,并提高实际操作和问题解决能力。
《机器人探险》作业设计方案(第一课时)一、作业目标通过本次作业,学生将能够:1. 了解机器人的基本概念和分类;2. 熟悉机器人探险游戏的规则和玩法;3. 掌握基本的操作技能,如鼠标移动、点击等;4. 培养团队协作和解决问题的能力。
二、作业内容1. 完成机器人探险游戏的基本操作练习:学生需要熟悉游戏界面,掌握鼠标移动、点击等基本操作,完成简单的任务,如寻找物品、解谜等。
2. 完成机器人探险任务:学生将被分为若干小组,每个小组需要完成一系列的探险任务,如找到宝藏、解谜等。
任务难度逐渐增加,学生需要运用所学知识和技能解决问题。
3. 团队协作:学生需要与小组其他成员协作完成任务,培养团队合作精神。
在完成任务的过程中,学生需要相互沟通、协作,共同解决问题。
4. 问题解决能力:学生需要面对和解决各种难题,如迷路、损坏机器人等。
学生需要学会运用所学知识进行分析和决策,解决问题。
三、作业要求1. 学生需独立完成任务并记录自己的操作过程和遇到的问题;2. 学生需要按时完成作业,并积极参与讨论和交流;3. 学生需要遵守游戏规则,不得作弊或使用外挂;4. 学生需要展示自己的成果,并与其他同学分享经验和教训。
四、作业评价1. 评价标准:根据学生的完成任务情况、操作技能、团队协作和问题解决能力等方面进行评价;2. 评价方式:教师评价与学生互评相结合,重点对学生的参与度和解决问题的能力进行评价;3. 反馈建议:对学生存在的问题和不足进行反馈,并提供改进建议和解决方案。
五、作业反馈1. 学生应根据教师和其他同学的反馈和建议,认真分析自己的优缺点,及时调整和改进自己的学习方法和态度;2. 学生应积极参与讨论和交流,与其他同学分享经验和教训,共同提高学习效果;3. 教师应对学生的反馈和建议进行整理和分析,不断改进教学方案和策略,提高教学质量和效果。
通过本次作业,学生将能够更好地掌握机器人探险游戏的基本操作技能和规则,提高自己的团队协作和问题解决能力,为后续的学习打下坚实的基础。
引言卡雷尔是一个生活在非常简单的世界中的非常简单的机器人。
在它的世界中,你可以通过给卡雷尔一组命令,直接让卡雷尔执行某些任务。
卡雷尔的世界被定义为水平的街(东西方向),垂直的道(南北方向),街和道的交点被称为街角。
卡雷尔只能定位在街角,而且只能面对四个标准罗盘方向(北,南,东,西)。
一个简单的卡雷尔世界显示如下,卡雷尔目前位于第一大街和第一大道相交的街角,面朝东边。
在上图中,我们还可以看到卡雷尔世界中其他的几件东西。
卡雷尔前面的物体是个蜂鸣器,只有当卡雷尔和蜂鸣器位于同一个街角上的时候,卡雷尔才能感知这个蜂鸣器。
图中的实线是墙壁,墙是卡雷尔世界的屏障,卡雷尔不能穿过墙壁,而只能在墙的周边行走。
卡雷尔的世界总是被作为边界的墙包围起来,但是,随着卡雷尔需要解决不同的具体问题,卡雷尔的世界也有不同的尺寸。
2.概述2.1背景介绍2.1.1Karel介绍在二十世纪七十年代,一位名字叫 Rich Pattis的斯坦福研究生觉得,在编程基础的教学中,如果学生可以在某种简单的环境中,摆脱大多数编程语言复杂的特性,学习基本的编程思想,可以取得更好的效果。
麻省理工 Seymour Papert’s LOGO计划的成功,启发了灵感,Rich 设计了一个入门编程环境,(这个编程环境)让学生教一个机器人来解决简单的问题。
这个机器人名字叫卡雷尔。
因为捷克剧作家 KarelCapek 在 1923年公演了 R.U.R (Rossum’s Universal Robots)后,为英语带来了机器人这个英语单词--Robot。
机器人卡雷尔相当成功。
卡雷尔被用于全国的计算机科学入门课程,到了 Rich 的教科书畅销超过 10万份的地步。
许多学习 CS106A的学生,通过设计卡雷尔的行为,学会了如何让程序工作在20世纪 90年代中期,我们曾经使用的机器人卡雷尔模拟器停止工作了。
但是,我们很快就得到了一个 Thetis编译的卡雷尔升级版供那时使用。
学号:0121210680325课程设计课程名称《能力拓展训练》题目Karel机器人编程学习学院计算机科学与技术学院专业软件工程班级软件1201班姓名董佳南指导教师张能立2015 年07 月05 日1设计题目:山崖探险设计我打算设计一个比较类似于野外探险类型的题目,环境为山崖地形。
刚开始打算就简单做一个机器人上山的程序。
但是后来,我考虑到现实中的真实情况:野外探险就怕的就是迷路。
所以我打算也在该程序上多加上这一部分。
所以,参考真实世界里为了防止迷路,野外探险一般会在前进的路线上,没相隔一段距离就做一个明显的标识。
我打算把这个想法也加入到我的卡雷尔世界里,具体实现我是这个构思的:首先卡雷尔出门探险之前要去资源补给站拾取足够的标识,也就是蜂鸣器,在上山的过程中,卡雷尔会沿路放置蜂鸣器便于找寻回家的路。
当卡雷尔成功的到达山顶后,就可以安全的依靠蜂鸣器原路返回。
2山崖探险算法概要设计对于山崖探险算法的设计。
1.环境设定:卡雷尔是一个喜欢冒险的机器人,它喜欢去各地有高山的地方探险,一个人爬到山顶,征服各式各样的名山高山。
但是,勇敢富有冒险精神的探险家卡雷尔却又一个强迫症(和我一样呢),它喜欢自山的西侧出发,爬到山顶(也就是面向东出发),到达山顶后原路回到出发点。
2.出发前部分:卡雷尔会在卡雷尔前面的街角设置一个补给点(有无限个蜂鸣器),然后卡雷尔前往补给点获得充足的路标。
3.上山部分:我打算采用碰壁转弯的思想,具体为上山时,若是直路就沿着一直走,直到遇到‘壁’:也就是山体,就要转向(面朝北):也就是得爬山了。
然后一直直走直到身体的右侧没被挡住时,转向(面朝东)同时,在上山的路程中,为了防止迷路,卡雷尔会在上山的同时,沿路防止标识,也就是它身上携带的蜂鸣器。
4到达山顶:是时候欣赏一下山顶的环境了,我让卡雷尔在山顶左右环顾看下山顶风景再下山。
5.下山部分:我参考现实世界里下山的方式,也就是小心翼翼,扶着山慢慢下山。
类比到卡雷尔下山之中,就是:当卡雷尔下山时(面朝西),当它的左侧被挡住时,它会一直前进。
当它的左侧没被挡住时,就要小心的转向了(面朝南),然后一直向下走。
直到前面被挡住,这时,它得转向(面又朝西)。
一直重复,直到下山。
同时,在下山的路途,卡雷尔不会迷路,因为它放了路标了(它可是一个合格的探险家呢)。
在回家的路上,卡雷尔会将路标(蜂鸣器)收集回自己的登山背包里,因为它是要征服全世界高山的机器人呢!成为世界第一的登山家,就是它的梦想!它会一直留着这些路标(蜂鸣器),直到它实现它的梦想。
6.最后:成功到达山顶并且安全回到出发点后,我打算设计一个雷卡尔原地向前翻跟斗与向后翻跟斗,来表达它内心又征服了一座高山的喜悦。
3.山崖探险程序流程图=出发点补给点是否是直路转向爬山并放路标直走并放路标终点!!是否是终点是否是否出发点!!是否为出发点终点判断左面是否为墙转向并拿起路标直走并拿起路标是否否是4.程序详细设计1.前往补给点:判断是否到达补给点,是的话捡起路标,否继续前进直到找到补给点public void run(){int i=99;int n=0;if(beepersPresent()) //前往补给点并带好充足的路标{for(;n<i;n++){pickBeeper();}move();}else{move();}2.上山部分:由于我事先设定好了故事背景,卡雷尔是一个有强迫症的冒险家,它只喜欢自西向东爬山,所以上山部分的代码如下。
当卡雷尔面向东时,开始爬山。
每次行动都会判断前方是否是直路,当前是否到达山顶了。
并且每次行动的同时都会放下一个路标便于找到回来的路。
若没到到达山顶,每一次行动完毕后都要确保面是朝东的,以便继续执行上山部分的代码。
若到达山顶,则让它180度转向,跳出上山代码部分,转而执行山顶代码部分。
2.1上山部分的代码:while(facingEast()) //面朝东为上山{if(frontIsClear()) //上山:判断是否为直路 {Shangshanzhizou(); //是,直走并且放路标Daoshandingmei(); //判断目前在山顶还是路上 }else//否,爬山并且放路标{Pasha();Daoshandingmei(); //判断目前在山顶还是路上 }}2.2上山调用的函数:2.2.1前方遇到山体挡路执行的向上爬山并放路标调用的函数:private void Pasha() //上山:爬山并且放路标{turnLeft();move();putBeeper();turnRight();}2.2.2前方没有遇到山体执行的直线前进并放置路标调用的函数:private void Shangshanzhizou() //上山:直走并且放路标{move();putBeeper();}2.2.3每次行动都要进行判断目前所处是否是山顶调用的函数:private void Daoshandingmei() //看看现在雷卡尔到达山顶没{turnLeft();if(frontIsClear()){turnRight(); //不是山顶,转向(面朝东),继续上山}else{turnLeft(); //是山顶,转向(面朝西)}}3到达山顶3.1到达山顶进行看风景的函数调用Daodashanding(); //到达山顶,准备看风景吧3.2到达山顶看风景的函数private void Daodashanding() //四处转转看看风景然后转向(面超西),准备下山{turnAround();turnAround();turnAround();turnAround();}4下山部分:参照故事背景,卡雷尔自西向东爬山。
所以当下山时,卡雷尔面向西。
每次行动都会判断左边是否是路,若是路则要判断前方是否挡住了,若左面和前方都挡住了,说明到达起点了。
每次行动的同时都会捡起上山时扔下来的路标。
若没到到达起点,每一次行动完毕后都要确保面是朝西的,以便继续执行下山部分的代码。
若到达起点,则让它180度转向,跳出下山代码部分,转而执行起点代码部分4.1下山部分的代码:private void Daodashanding() //四处转转看看风景然后转向(面超西),准备下山{turnAround();turnAround();turnAround();turnAround();}4.2下山调用的函数4.2.1左边没被挡住进行向下下山所调用的函数:private void Xiashan() // 下山:下山并且拿路标{turnLeft();pickBeeper();move();turnRight();}4.2.2左边被挡住了进行直线行走所调用的函数:private void Xiashanzhizou() //下山:直走并且拿路标{pickBeeper();move();}4.2.3判断是否到达起点的所调用函数注意!此处和上山判断是否到达山顶有所不同,上山判断目前所在是否为山顶是无论当前是哪一步都要进行判断。
而下上部分,参考真实世界,此函数只有当左边被挡住才会进行调用判断前方是否被挡住,是的话则说明是起点。
故该函数只需要加入到下山函数中的左面被挡的那个分支中即可。
private void Huidaoqidianmei() //看看现在雷卡尔回到起点没{if(frontIsClear()){//不是起点,转向(面朝西)继续下山!}else//是起点,准备好庆祝吧!!!{turnAround();}5回到起点5.1安全回到起点进行庆祝函数调用Huidaoqidian(); //回到起点,平安到达5.2成功征服新的一座高山进行庆祝的函数private void Huidaoqidian() //成功了!!!!庆祝一下吧!!{turnLeft();turnLeft();turnLeft();turnLeft();turnRight();turnRight();turnRight();turnRight();turnLeft();turnLeft();turnLeft();turnLeft();turnRight();turnRight();turnRight();turnRight();}5.运行结果(采用的演示实例为自制的20x30的高山地图)1.前往补给点:2.上山部分:正在上山并且放置路标3.山顶部分:到达山顶正在左右环顾欣赏风景(截图不能表现动态,请老师看程序,可以直观看到)4.下山部分:正在捡起路标并且原路返回4.5庆祝部分:到达起点后正在翻跟斗庆祝!(截图不能表现动态,请老师看程序,可以直观看到)6.小结与体会这次课程设计过程中,我才知道原来原来有这个叫卡雷尔的机器人,生活在非常简单的世界中,我非常喜欢它。
这门课程设计没有具体的代码实现,我们不需要了解机器人是如何完成每一步的指令,只需要构建一个世界,设计一个问题,然后让机器人完成它就行了,如此的简单。
特别容易上手,而且让人会沉浸在这个世界中,想象自己就是卡雷尔机器人,然后自己给自己发布一个任务,然后设身处地的思考该怎样完成。
每当成功完成后,就会很有成就感,然后在迫不及待地想下一个问题。
大学三年以来,感觉很大程度一部分的课程,我们只是为了完成学才会去主动选择的。
然而这学期的的最后一门课,却大大超乎我的预料。
我本以为这次课程设计和往年假期的课程设计一样,是很无趣枯燥的,完成也只是完成任务而已。
但是,这门课程不是,这门课程仿佛是在让我们玩一个游戏一般,简单很吸引人。
有趣也能让我们了解学习JAVA。
我不知道为什么这门课程没有放在大一开设,如果这门课程放在大一的话,我相信它会让初次了解JAVA和编程的同学对之产生巨大的学习兴趣的。
总之,这是一门我非常喜欢的课程,我会推荐给初学者和学弟学妹们的。
这是我在大学期间里,第一次也可能是最后一次如此的喜欢一项作业了,我为此熬夜做到2点钟都毫无知觉!我爱卡雷尔的世界。
谢谢老师让我了解到它。
7.源代码/** File: StoneMasonKarel.java* --------------------------* The StoneMasonKarel subclass as it appears here does nothing.* When you finish writing it, it should solve the "repair the quad"* problem from Assignment 1. In addition to editing the program,* you should be sure to edit this comment so that it no longer* indicates that the program does nothing.*/import stanford.karel.*;/** Name: 董佳南* Section Leader: 张能立*/public class Shanyatanxian extends SuperKarel{public void run(){int i=99;int n=0;if(beepersPresent()) //前往补给点并带好充足的路标{for(;n<i;n++){pickBeeper();}move();}else{move();}while(facingEast()) //面朝东为上山{if(frontIsClear()) //上山:判断是否为直路{Shangshanzhizou(); //是,直走并且放路标Daoshandingmei(); //判断目前在山顶还是路上}else //否,爬山并且放路标{Pasha();Daoshandingmei(); //判断目前在山顶还是路上}}Daodashanding(); //到达山顶,准备看风景吧while(facingWest()) //面朝西为下山{if(leftIsBlocked()) //下山:判断左面是否为墙{Xiashanzhizou(); //是,直走并且拿路标Huidaoqidianmei(); //判断目前在起点还是路上}else //否,下山并且拿路标{Xiashan();}}Huidaoqidian(); //回到起点,平安到达}private void Pasha() //上山:爬山并且放路标{turnLeft();move();putBeeper();turnRight();}private void Shangshanzhizou() //上山:直走并且放路标{move();putBeeper();}private void Daoshandingmei() //看看现在雷卡尔到达山顶没{turnLeft();if(frontIsClear()){turnRight(); //不是山顶,转向(面朝东),继续上山}else{turnLeft(); //是山顶,转向(面朝西)}}private void Daodashanding() //四处转转看看风景然后转向(面超西),准备下山{turnAround();turnAround();turnAround();turnAround();}private void Xiashan() // 下山:下山并且拿路标{turnLeft();pickBeeper();move();turnRight();}private void Xiashanzhizou() //下山:直走并且拿路标{pickBeeper();move();}private void Huidaoqidianmei() //看看现在雷卡尔回到起点没{if(frontIsClear()){//不是起点,转向(面朝西)继续下山!}else //是起点,准备好庆祝吧!!!{turnAround();}}private void Huidaoqidian() //成功了!!!!庆祝一下吧!!{turnLeft();turnLeft();turnLeft();turnLeft();turnRight();turnRight();turnRight();turnRight();turnLeft();turnLeft();turnLeft();turnLeft();turnRight();turnRight();turnRight();turnRight();}}8参考资料四个基础指令:1)move() 要求卡雷尔向前推进一步。