Ausgänge anzeigen
Teil des Abschnitts Logic & Flow der Lua-Journey von Coddy — Lektion 31 von 54.
Aufgabe
EinfachVerbessere das Benutzererlebnis des Spiels, indem du dem Spieler alle verfügbaren Ausgänge anzeigst, nachdem die Raumbeschreibung eingeblendet wurde.
Dir werden die Variablen startingRoom, gardenRoom und player aus der vorherigen Herausforderung zur Verfügung gestellt.
Ändere die Spielschleife (Game Loop), um die verfügbaren Ausgänge anzuzeigen:
- Gib die Beschreibung des aktuellen Raums des Spielers aus
- Gib
"Exits:"in einer neuen Zeile aus - Verwende
pairs(), um über dieexits-Tabelle des aktuellen Raums zu iterieren - Gib für jeden Ausgang
" - "(zwei Leerzeichen, ein Bindestrich und ein Leerzeichen) gefolgt vom Namen der Richtung 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.currentRoomauf den in diesem Ausgang gespeicherten Raum - Wenn der Befehl mit keinem Ausgang übereinstimmt und nicht
"quit"ist, gib"You can't go that way."aus - Wenn 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.
Exits:
- east
>
A hidden garden with overgrown plants and a small fountain.
Exits:
- west
>
You can't go that way.
A hidden garden with overgrown plants and a small fountain.
Exits:
- west
>
You find yourself in a dusty library filled with ancient books and scrolls.
Exits:
- east
> Probier es selbst
-- Room definitions
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 = {}
}
-- Connect rooms
startingRoom.exits["north"] = gardenRoom
gardenRoom.exits["south"] = startingRoom
-- Player
local player = {
currentRoom = startingRoom
}
-- Game loop
local gameRunning = true
while gameRunning do
print(player.currentRoom.description)
io.write("> ")
local command = io.read()
if command == "quit" then
gameRunning = false
elseif player.currentRoom.exits[command] then
player.currentRoom = player.currentRoom.exits[command]
else
print("You can't go that way.")
end
endAlle Lektionen in Logic & Flow
1Fortgeschrittene Table-Iteration
Iterieren mit pairs()Iterieren mit ipairs()pairs() vs. ipairs()Zusammenfassung – Charakterbogen4Einführung in Metatables
Was ist eine Metatable?setmetatable & getmetatableDie __index-MetamethodeDie __newindex-MetamethodeDie __tostring-MetamethodeArithmetische Metamethoden Teil 1Arithmetische Metamethoden Teil 2Zusammenfassung – Schreibgeschützte Tabellen7Fortgeschrittene String-Manipulation
string.gsub() für ErsetzungenEinführung in String-Patternsstring.find()string.match()Iterieren mit string.gmatch()Rückblick – Log-File-Parser2Weitere Funktionen der Table-Bibliothek
table.concat()Tabellenerstellung & unpack()table.sort()Benutzerdefiniertes Sortieren mit FunktionenRückblick – Highscore-Tabelle5Projekt: Text-Adventure-Engine
Projekt-Setup: Der RaumRäume verknüpfen