Den Spieler bewegen
Teil des Abschnitts Logik & Programmablauf der Lua-Journey von Coddy. Lektion 29 von 54.
Aufgabe
EinfachImplementiere das Bewegungssystem, das dem Spieler ermöglicht, sich zwischen Räumen zu bewegen, indem seine Eingabe mit den verfügbaren Ausgängen verglichen wird.
Die Variablen startingRoom, gardenRoom und player aus der vorherigen Aufgabe werden bereitgestellt.
Ändere die Spielschleife, damit sie Bewegungsbefehle verarbeitet:
- 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
exits-Tabelle des aktuellen Raums übereinstimmt - Wenn er übereinstimmt, aktualisiere
player.currentRoommit dem Raum, der in diesem Ausgang gespeichert ist - Wenn der Befehl
"quit"lautet, setzegameRunningauffalse, um die Schleife zu verlassen
Die Schleife sollte fortgesetzt werden, bis der Benutzer "quit" eingibt.
Hinweis: Da io.write("> ") keinen Zeilenumbruch hinzufügt, erscheint die nächste Ausgabezeile (die Raumbeschreibung) im rohen Ausgabestrom unmittelbar nach der Eingabeaufforderung in derselben Zeile. Jede Schleifeniteration erzeugt: die Raumbeschreibung in einer eigenen Zeile, anschließend > ohne Zeilenumbruch, sodass die folgende Beschreibung in derselben Zeile fortgesetzt wird.
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
-- Game rooms
local startingRoom = {
description = "You find yourself in a dusty library filled with ancient books and scrolls."
}
local gardenRoom = {
description = "You step into a beautiful garden with blooming flowers and a gentle breeze."
}
-- Player
local player = {
currentRoom = startingRoom
}
-- Game loop
local gameRunning = true
while gameRunning do
print(player.currentRoom.description)
io.write("> ")
local command = io.read()
print("You entered: " .. command)
if command == "quit" then
gameRunning = false
end
endAlle Lektionen in Logik & 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