Gestire le mosse non valide
Fa parte della sezione Logica e flusso del percorso Lua di Coddy. Lezione 30 di 54.
Sfida
FacileAggiungi la gestione degli errori al sistema di movimento per fornire un feedback quando il giocatore inserisce una direzione non valida.
Ti vengono fornite le variabili startingRoom, gardenRoom e player della sfida precedente.
Modifica il ciclo di gioco per gestire i comandi di movimento non validi:
- Sostituisci le uscite est/ovest della sfida precedente con uscite nord/sud: imposta
startingRoom.exits["north"]sugardenRoomegardenRoom.exits["south"]sustartingRoom - 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.currentRoomalla stanza memorizzata in quell'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.
> 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.
> Provalo tu
-- Definizioni delle stanze
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: Collega le stanze con uscite a nord e a sud
-- Giocatore
local player = {
currentRoom = startingRoom
}
-- Ciclo di gioco
local gameRunning = true
-- TODO: Scrivi qui il ciclo while
Tutte 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