迷宫代码:左手扶墙法

第一次生成的迷宫没有环。左手一直扶着墙走,就能走过每条走廊,宝箱也在路上。

最容易写错的迷宫规则

  • 站在灌木上调用 `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()` 朝宝箱走,别死扶墙。