Menu
Coddy logo textTech

Gérer les déplacements invalides

Fait partie de la section Logique et flux du Journey Lua de Coddy. Leçon 30 sur 54.

challenge icon

Défi

Facile

Ajoutez la gestion des erreurs au système de déplacement afin de fournir un retour lorsque le joueur saisit une direction invalide.

Les variables startingRoom, gardenRoom et player vous sont fournies depuis le défi précédent.

Modifiez la boucle de jeu pour gérer les commandes de déplacement invalides :

  • Reliez les pièces à l'aide des sorties nord/sud : définissez startingRoom.exits["north"] sur gardenRoom, et gardenRoom.exits["south"] sur startingRoom
  • Affichez la description de la pièce actuelle du joueur
  • Affichez l'invite "> " (signe supérieur suivi d'une espace) sans retour à la ligne
  • Lisez la commande de l'utilisateur à l'aide de io.read()
  • Vérifiez si la commande correspond à une clé de 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 ne correspond à aucune sortie et n'est pas "quit", affichez "You can't go that way."
  • Si la commande est "quit", définissez gameRunning sur false pour quitter la boucle

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

Format de sortie attendu :

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

Essayez vous-même

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

-- Set exits using east / west
startingRoom.exits = {
  east = gardenRoom
}

gardenRoom.exits = {
  west = 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]
  end
end

Toutes les leçons de Logique et flux

Entraînez-vous par vous-même : Compilateur Lua en ligne