Menu
CoddyTech

Den Spieler bewegen

Teil des Abschnitts Logik und Programmablauf der Lua-Journey von Coddy. Lektion 29 von 54.

challenge icon

Aufgabe

Einfach

Implementiere das Bewegungssystem, mit dem der Spieler zwischen Räumen navigieren kann, indem seine Eingabe mit den verfügbaren Ausgängen abgeglichen wird.

Die Variablen startingRoom, gardenRoom und player aus der vorherigen Herausforderung werden bereitgestellt.

Passe die Spielschleife so an, dass sie Bewegungsbefehle verarbeitet:

  • Die Vorlage verbindet die Räume: Mit east gelangt man von der Bibliothek in den Garten, und mit west geht es zurück
  • Gib die Beschreibung des aktuellen Raums des Spielers aus
  • Gib die Eingabeaufforderung "> " (Größer-als-Zeichen gefolgt von einem Leerzeichen) ohne Zeilenumbruch aus
  • Lies den Befehl des Benutzers mit io.read() ein
  • Prüfe, ob der Befehl mit einem Schlüssel in der Tabelle exits des aktuellen Raums übereinstimmt
  • Wenn es eine Übereinstimmung gibt, aktualisiere player.currentRoom mit dem Raum, der in diesem Ausgang gespeichert ist
  • Wenn der Befehl "quit" lautet, setze gameRunning auf false, um die Schleife zu beenden

Die Schleife sollte so lange fortgesetzt werden, bis der Benutzer "quit" eingibt.

Hinweis: Da io.write("> ") keinen Zeilenumbruch hinzufügt, erscheint die nächste Ausgabezeile (die Raumbeschreibung) im Roh-Ausgabestrom unmittelbar nach der Eingabeaufforderung in derselben Zeile. Jede Schleifeniteration gibt Folgendes aus: die Raumbeschreibung in einer eigenen Zeile, dann > ohne Zeilenumbruch, sodass die folgende Beschreibung in derselben Zeile weitergeht.

Erwartetes Ausgabeformat (Eingaben: east, dann quit):

You find yourself in a dusty library filled with ancient books and scrolls.
> A hidden garden with overgrown plants and a small fountain.
> 

Probier es selbst

-- Raumdefinitionen
local startingRoom = {
  description = "You find yourself in a dusty library filled with ancient books and scrolls.",
  exits = {}
}

local gardenRoom = {
  description = "A hidden garden with overgrown plants and a small fountain.",
  exits = {}
}

-- Ausgänge mit east / west festlegen
startingRoom.exits = {
  east = gardenRoom
}

gardenRoom.exits = {
  west = startingRoom
}

-- Spieler
local player = {
  currentRoom = startingRoom
}

-- Spielschleife
local gameRunning = true

-- TODO: Schreibe hier die while-Schleife

Alle Lektionen in Logik und Programmablauf

Übe selbstständig: Online-Lua-Compiler