lehrkraefte:blc:informatik:ffprg1-2020:snake

This is an old revision of the document!


Snake

Programmieren Sie eine Strategie, die die Schlange steuert.

Source-Code

Anleitung

  • Archiv entpacken (Source-Code)
  • Alle .py-Dateien in TigerJython öffnen.
  • game.py in Tigerjython starten.
  • Für eigene Strategie ivo_simple_strategy.py kopieren und wie folgt benennen: name_xyz_strategy.py, nur Kleinbuchstaben a-z und _ (underscore). Die Datei muss mit dem eigenen Namen beginnen und mit strategy.py aufhören.
  • In game.py:
    • Die eigene Strategie importieren (ganz oben im Code, analog zu ivo_simple_strategy.
    • Eigene Strategie ganz unten in game.py eintragen (min. 1 ivo_simple_strategy ersetzen).
  • Code studieren, Fragen stellen.

Dokumentation

Entweder direkt Kommentare im Code oder online.

Die Logik des Spiel läuft in game.py. Damit haben Sie, ausser zum Eintragen Ihrer eigenen Strategie, erst mal nicht viel zu tun.

Das Spiel (in game.py) läuft wie folgt ab:

  • Strategien, Spielfeld etc initialisieren.
  • Jede Strategie nach der Richtung für nächsten Schritt fragen: 0-3 (links, unten, rechts, oben).
  • Schritte ausführen, Kollisionen und Apfelfressen überprüfen.

Eine Strategie hat Zugriff auf folgende Informationen um den nächsten Schritt zu planen (d.h. welche der 4 Richtungen):

  • self.params (Alle Informationen zum aktuellen Spielstand)

width (int): Breite des Spielfelds

      height (int): Hoehe des Spielfelds
      feld (int[width][height]): Aktueller Zustand des Felds
      vanish (int[width][height]): Bis wann ein Feld noch besetzt ist.
      alive (bool): Ob die Schlange noch am Leben ist.
      points (int): Punkte des Spielers
      time (int): Aktuelle Zeit (in Spielschritten)
      appletime (int): Zeit, zu welcher der Apfel verfault (und alle Schlangen sterben).
      x (int): x-Koordinate der Schlange
      y (int): y-Koordinate der Schlange
      dir (int): Letzte Richtung der Schlange
      reason (str): Todesursache
      changed (int[][2]): Koordinaten der Felder, wo eine Veraenderung stattgefunden hat.
      heads (int[][2]): Koordinaten der aller lebenden Schlangenkoepfe (auch des eigenen)
      apple (int[2]): Koordinaten des Apfels

So liefert z.B. self.params.apple[0] die $x$-Koordinate des Apfels oder self.params.feld[3][7] den Inhalt vom Spielfeld an der Position (3,7), etc.

  • lehrkraefte/blc/informatik/ffprg1-2020/snake.1588604672.txt.gz
  • Last modified: 2020/05/04 17:04
  • by Ivo Blöchliger