Afficher les sorties
Fait partie de la section Logic & Flow du Journey Lua de Coddy — leçon 31 sur 54.
Défi
FacileAméliorez l'expérience utilisateur du jeu en affichant toutes les sorties disponibles pour le joueur après avoir montré la description de la pièce.
Vous disposez des variables startingRoom, gardenRoom et player du défi précédent.
Modifiez la boucle de jeu pour afficher les sorties disponibles :
- Affichez la description de la pièce actuelle du joueur
- Affichez
"Exits:"sur une nouvelle ligne - Utilisez
pairs()pour itérer à travers la tableexitsde la pièce actuelle - Pour chaque sortie, affichez
" - "(deux espaces, un tiret et un espace) suivi du nom de la direction - 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
exitsde la pièce actuelle - Si elle correspond, mettez à jour
player.currentRoomavec 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éfinissezgameRunningsurfalsepour quitter la boucle
La boucle doit continuer jusqu'à ce que l'utilisateur tape "quit".
Format de sortie attendu :
You find yourself in a dusty library filled with ancient books and scrolls.
Exits:
- east
>
A hidden garden with overgrown plants and a small fountain.
Exits:
- west
>
You can't go that way.
A hidden garden with overgrown plants and a small fountain.
Exits:
- west
>
You find yourself in a dusty library filled with ancient books and scrolls.
Exits:
- east
> 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 = {}
}
-- Connect rooms
startingRoom.exits["north"] = gardenRoom
gardenRoom.exits["south"] = 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]
else
print("You can't go that way.")
end
endToutes les leçons de Logic & Flow
1Itération avancée des tables
Itérer avec pairs()Itérer avec ipairs()pairs() vs. ipairs()Récapitulatif - Fiche de personnage2Plus de fonctions de la bibliothèque table
table.concat()Construction de table & unpack()table.sort()Tri personnalisé avec des fonctionsRécapitulatif - Tableau des scores5Projet : Moteur de jeu d'aventure textuel
Configuration du projet : La pièceRelier les pièces3Concepts avancés sur les fonctions
Retourner plusieurs valeursFonctions variadiques (...)Les fonctions comme valeurs de première classeFonctions anonymesQu'est-ce qu'une closure ?Récapitulatif - Gestionnaire d'événements simple