Muovere il giocatore
Fa parte della sezione Logica e flusso del percorso Lua di Coddy. Lezione 29 di 54.
Sfida
FacileImplementa il sistema di movimento che permette al giocatore di spostarsi tra le stanze controllando il suo input rispetto alle uscite disponibili.
Ti vengono fornite le variabili startingRoom, gardenRoom e player della sfida precedente.
Modifica il ciclo di gioco per gestire i comandi di movimento:
- Stampa la descrizione della stanza in cui si trova il giocatore
- Stampa il prompt
"> "(segno di 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 corrente - Se corrisponde, aggiorna
player.currentRoomcon la stanza memorizzata in quell'uscita - Se il comando è
"quit", impostagameRunningsufalseper uscire dal ciclo
Il ciclo dovrebbe continuare finché l'utente non digita "quit".
Nota: Poiché io.write("> ") non aggiunge un'interruzione di riga, la riga di output successiva (la descrizione della stanza) appare immediatamente dopo il prompt, sulla stessa riga nel flusso di output grezzo. Ogni iterazione del ciclo produce: la descrizione della stanza su una riga, poi > senza interruzione di riga, quindi la descrizione successiva continua sulla stessa riga.
Formato dell'output previsto (input: east, poi quit):
You find yourself in a dusty library filled with ancient books and scrolls.
> A hidden garden with overgrown plants and a small fountain.
> Provalo tu
-- 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
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