Visualizzare le uscite
Fa parte della sezione Logica e flusso del percorso Lua di Coddy. Lezione 31 di 54.
Sfida
FacileMigliora l'esperienza utente del gioco mostrando al giocatore tutte le uscite disponibili dopo aver mostrato la descrizione della stanza.
Ti vengono fornite le variabili startingRoom, gardenRoom e player della sfida precedente.
Modifica il ciclo del gioco per mostrare le uscite disponibili:
- Stampa la descrizione della stanza attuale del giocatore
- Stampa
"Exits:"su una nuova riga - Usa
pairs()per scorrere la tabellaexitsdella stanza attuale - Per ogni uscita, stampa
" - "(due spazi, un trattino e uno spazio) seguito dal nome della direzione - Stampa il prompt
"> "(il simbolo maggiore seguito da uno spazio) senza andare a capo - Leggi il comando dell'utente usando
io.read() - Controlla se il comando corrisponde a una chiave nella tabella
exitsdella stanza attuale - Se corrisponde, aggiorna
player.currentRoomassegnandogli la stanza memorizzata in quella uscita - Se il comando non corrisponde a nessuna uscita e non è
"quit", stampa"You can't go that way." - Se il comando è
"quit", impostagameRunningsufalseper uscire dal ciclo
Il ciclo dovrebbe continuare finché l'utente non digita "quit".
Formato dell'output previsto:
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
> Provalo tu
-- 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
endTutte le lezioni di Logica e flusso
1Iterazione avanzata delle tabelle
Iterare con pairs()Iterare con ipairs()pairs() vs. ipairs()Riepilogo - Scheda del personaggio2Altre funzioni della libreria table
table.concat()Costruzione di tabelle e unpack()table.sort()Ordinamento personalizzato con funzioniRiepilogo - Tabellone dei punteggi più alti5Progetto: Motore per avventure testuali
Configurazione del progetto: la stanzaCollegare le stanzeEsercitati da solo: Compilatore Lua online