Ungültige Züge behandeln
Teil des Abschnitts Logik und Programmablauf der Lua-Journey von Coddy. Lektion 30 von 54.
Aufgabe
EinfachFüge dem Bewegungssystem Fehlerbehandlung hinzu, damit eine Rückmeldung erfolgt, wenn der Spieler eine ungültige Richtung eingibt.
Die Variablen startingRoom, gardenRoom und player aus der vorherigen Herausforderung werden bereitgestellt.
Ändere die Spielschleife so, dass ungültige Bewegungsbefehle behandelt werden:
- Ersetze die Ausgänge nach Osten/Westen aus der vorherigen Herausforderung durch Ausgänge nach Norden/Süden: Setze
startingRoom.exits["north"]aufgardenRoomundgardenRoom.exits["south"]aufstartingRoom - 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 - Falls ja, setze
player.currentRoomauf den Raum, der in diesem Ausgang gespeichert ist - Falls der Befehl mit keinem Ausgang übereinstimmt und nicht
"quit"lautet, gib"You can't go that way."aus - Falls der Befehl
"quit"lautet, setzegameRunningauffalse, um die Schleife zu beenden
Die Schleife sollte so lange fortgesetzt werden, bis der Benutzer "quit" eingibt.
Erwartetes Ausgabeformat:
You find yourself in a dusty library filled with ancient books and scrolls.
> A hidden garden with overgrown plants and a small fountain.
> You can't go that way.
A hidden garden with overgrown plants and a small fountain.
> You find yourself in a dusty library filled with ancient books and scrolls.
> 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 = {}
}
-- TODO: Verbinde die Räume mit Ausgängen nach Norden und Süden
-- 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