Den Spieler bewegen
Teil des Abschnitts Logik und Programmablauf der Lua-Journey von Coddy. Lektion 29 von 54.
Aufgabe
EinfachImplementiere 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
eastgelangt man von der Bibliothek in den Garten, und mitwestgeht 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
exitsdes aktuellen Raums übereinstimmt - Wenn es eine Übereinstimmung gibt, aktualisiere
player.currentRoommit dem Raum, der in diesem Ausgang gespeichert ist - Wenn der Befehl
"quit"lautet, setzegameRunningauffalse, 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
1Fortgeschrittene Tabelleniteration
Iterieren mit pairs()Iterieren mit ipairs()pairs() vs. ipairs()Zusammenfassung – Charakterbogen2Weitere Funktionen der Tabellenbibliothek
table.concat()Tabellenkonstruktion & unpack()table.sort()Eigene Sortierung mit FunktionenRückblick – Highscore-Tabelle5Projekt: Text-Adventure-Engine
Projektsetup: Der RaumRäume verknüpfenÜbe selbstständig: Online-Lua-Compiler