作业5:Karel建造医院
你的任务是通过编程来让Karel建造医院,开始如图所示:。
图中的每个蜂鸣器都代表一堆补给品。
Karel 的工作是沿着第一行行走,
并在每个蜂鸣器标记的地方建造一家新医院。
新医院应以留下补给品的地方为中心,
这意味着上图中的第一家医院将沿第二列建造,
其左边缘将沿第二列建造,
因为蜂鸣器最初位于第三列。
在运行结束时,Karel 应该位于第一行的东放,如图所示:
请记住以下有关世界的信息:
1.Karel初始状态:第一行第一列的角落,面向东方;包里有1000个蜂鸣器
2.指示医院应建造位置的蜂鸣器将间隔开,以便有空间建造医院而不会重叠或撞墙;
3.你不必建造从最后两列中的任何一列开始的医院;
4.如果 Karel 建造了一家以最后一个角落结束的医院,它不应该撞墙;
编写代码以实现 Hospital Karel。使用 helper 函数。想一想,"Karel 需要采取哪些高级步骤",并将这些步骤转换为辅助函数。
🚀请记住,您的程序应该适用于满足上述条件的任何世界。🌻
⏳开始你的编程之旅吧!
🔥逐步求精法🔥
🔥边开发边迭代测试🔥
函数 |
描述 |
函数 |
描述 |
move() |
向前移动一步 |
turn_left() |
向左转90度 |
pick_beeper() |
拾取当前位置的蜂鸣器 |
put_beeper() |
在当前位置放置蜂鸣器 |
front_is_clear() |
检查前方是否有墙 |
front_is_blocked() |
检查前方是否被墙挡住 |
left_is_clear() |
检查左侧是否有墙 |
left_is_blocked() |
检查左侧是否被墙挡住 |
right_is_clear() |
检查右侧是否有墙 |
right_is_blocked() |
检查右侧是否被墙挡住 |
beepers_present() |
检查当前位置是否有蜂鸣器 |
no_beepers_present() |
检查当前位置是否没有蜂鸣器 |
beepers_in_bag() |
检查背包中是否有蜂鸣器 |
no_beepers_in_bag() |
检查背包中是否没有蜂鸣器 |
facing_north() |
检查是否面向北方 |
not_facing_north() |
检查是否没有面向北方 |
facing_south() |
检查是否面向南方 |
not_facing_south() |
检查是否没有面向南方 |
facing_east() |
检查是否面向东方 |
not_facing_east() |
检查是否没有面向东方 |
facing_west() |
检查是否面向西方 |
not_facing_west() |
检查是否没有面向西方 |