迷宫代码:左手扶墙法
第一次生成的迷宫没有环。左手一直扶着墙走,就能走过每条走廊,宝箱也在路上。
最容易写错的迷宫规则
- 站在灌木上调用 `use_item(Items.Weird_Substance, n)`,会长出 n×n 的树篱迷宫。奇怪物质来自给植物施肥。
- 对宝箱 `harvest()` 得到的金币等于迷宫面积(5×5 是 25)。收在别的格子上,整座迷宫会消失。
- 宝箱上 `get_entity_type()` 是 `Entities.Treasure`,树篱是 `Entities.Hedge`,无人机飞不过去。
- 撞墙时 `move()` 返回 False。`can_move(direction)` 只检查不移动。在迷宫里任意位置 `measure()` 会返回宝箱坐标。
生成迷宫,然后左手扶墙
python
def spawn_maze():
if get_ground_type() != Grounds.Soil:
till()
harvest()
plant(Entities.Bush)
size = get_world_size()
use_item(Items.Weird_Substance, size)
def solve_maze():
dirs = [North, East, South, West]
facing = 0
while get_entity_type() != Entities.Treasure:
left = (facing - 1) % 4
if can_move(dirs[left]):
facing = left
move(dirs[facing])
elif can_move(dirs[facing]):
move(dirs[facing])
else:
facing = (facing + 1) % 4
harvest()
clear()
while True:
spawn_maze()
solve_maze() 第一次通关之后
在宝箱上再使用奇怪物质,宝箱会换位置,墙也可能被打出缺口。那种迷宫有环,单纯扶墙可能永远转圈。冲榜时用 `measure()` 朝宝箱走,别死扶墙。