Ein Rollenspiel

Das Beispiel <https://github.com/asbl/gamegridp/tree/0.4/examples/games/rpg>‘_ zeigt Grundbestandteile zum Erstellen eines Rollenspiels:

class Wall(gamegridp.Actor):
    def setup(self):
        self.is_blocking = True
        self.set_image("rpgimages/wall.png")

class Grass(gamegridp.Actor):
    def setup(self):
        self.set_image("rpgimages/grass.png")

class Torch(gamegridp.Actor):
    def setup(self):
        self.set_image("rpgimages/torch.png")

class Fireplace(gamegridp.Actor):
    def setup(self):
        self.set_image("rpgimages/fireplace_0.png")
        self.burning = False

Verschiedene Objekte können einfach als einzelne Akteure hinzugefügt werden. Über self.xyz werden Attribute wie z.B. burning hinzugefügt.

def listen(self, event, data):
     if event == "key_down":
         if "W" in data:
             if self.is_valid_move(self.move_up,1):
                 self.move_up()
         elif "S" in data:
             self.move_down()
         elif "A" in data:
             self.move_left()
         elif "D" in data:
             self.move_right()
     # Wird auf den Button Torch gedrückt?

Über die Tasten kann die Figur gesteuert werden (Wichtig: Verwende das Event key_down, nicht key oder key_pressed).

Die folgende Abfrage überpüft, ob auf dem aktuellen Feld eine Fackel liegt und öffnet ein Pop-Up Fenster um abzufragen, ob diese aufgehoben werden soll.

torch = self.get_actor_at_location("Torch")
 if torch:
     message = "Du findest eine Fackel. Möchtest du sie aufheben?"
     choices = ["Ja", "Nein"]
     reply = self.grid.msgbox(message,choices)
     if reply == "Ja":
         self.inventory.append("Torch")
         torch.remove()
         self.grid.console.print("Du hebst die Fackel auf.")
         self.grid.toolbar.add_button("Fackel", "rpgimages/torch.png")