Menu
Coddy logo textTech

Déplacer le joueur

Fait partie de la section Logic & Flow du Journey Lua de Coddy — leçon 29 sur 54.

challenge icon

Défi

Facile

Implémentez le système de mouvement qui permet au joueur de naviguer entre les pièces en vérifiant sa saisie par rapport aux sorties disponibles.

Vous disposez des variables startingRoom, gardenRoom et player du défi précédent.

Modifiez la boucle de jeu pour gérer les commandes de mouvement :

  • Affichez la description de la pièce actuelle du joueur
  • Affichez l'invite "> " (signe supérieur suivi d'un espace) sans saut de ligne
  • Lisez la commande de l'utilisateur en utilisant io.read()
  • Vérifiez si la commande correspond à une clé dans la table exits de la pièce actuelle
  • Si elle correspond, mettez à jour player.currentRoom avec la pièce stockée dans cette sortie
  • Si la commande est "quit", définissez gameRunning à false pour quitter la boucle

La boucle doit continuer jusqu'à ce que l'utilisateur tape "quit".

Remarque : Comme io.write("> ") n'ajoute pas de saut de ligne, la ligne de sortie suivante (la description de la pièce) apparaît immédiatement après l'invite sur la même ligne dans le flux de sortie brut. Chaque itération de la boucle produit : la description de la pièce sur sa propre ligne, puis > sans saut de ligne, de sorte que la description suivante continue sur cette même ligne.

Format de sortie attendu (entrées : east, puis quit) :

You find yourself in a dusty library filled with ancient books and scrolls.
> A hidden garden with overgrown plants and a small fountain.
> 

Essayez vous-même

-- 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
end

Toutes les leçons de Logic & Flow