Labyrinth-Code: Linke-Wand-Regel

Ein frisches Labyrinth hat keine Schleifen. Folgst du der linken Wand, triffst du den Schatz.

Regeln, an denen die meisten Skripte scheitern

  • Auf einem Busch `use_item(Items.Weird_Substance, n)` erzeugt ein n×n-Labyrinth.
  • `harvest()` auf dem Schatz gibt Gold gleich der Fläche. Überall sonst verschwindet das Labyrinth.
  • Schatz = `Entities.Treasure`, Hecke = `Entities.Hedge`.
  • `move()` ist False an Wänden. `measure()` liefert die Schatzkoordinaten.

Labyrinth erzeugen, dann links folgen

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()

Nach dem ersten Labyrinth

Wiederverwendete Labyrinthe können Schleifen haben. Für Bestzeiten mit `measure()` direkt zum Schatz laufen.