Menu
CoddyTech

Muovere il giocatore

Fa parte della sezione Logica e flusso del percorso Lua di Coddy. Lezione 29 di 54.

challenge icon

Sfida

Facile

Implementa il sistema di movimento che consente 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:

  • La configurazione iniziale collega le stanze: east dalla biblioteca conduce al giardino e west riporta indietro
  • Stampa la descrizione della stanza attuale del 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 exits della stanza attuale
  • Se corrisponde, aggiorna player.currentRoom alla stanza memorizzata in quell'uscita
  • Se il comando è "quit", imposta gameRunning su false per 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 propria, quindi > senza interruzione di riga, perciò 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

-- 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 = {}
}

-- Imposta le uscite usando east / west
startingRoom.exits = {
  east = gardenRoom
}

gardenRoom.exits = {
  west = startingRoom
}

-- Giocatore
local player = {
  currentRoom = startingRoom
}

-- Ciclo di gioco
local gameRunning = true

-- TODO: Scrivi qui il ciclo while

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore Lua online