Déplacer le joueur
Fait partie de la section Logique et déroulement du programme du Journey Lua de Coddy. Leçon 29 sur 54.
Défi
FacileImplémentez le système de déplacement qui permet au joueur de naviguer entre les pièces en comparant sa saisie aux sorties disponibles.
Les variables startingRoom, gardenRoom et player de l’exercice précédent vous sont fournies.
Modifiez la boucle de jeu pour gérer les commandes de déplacement :
- Le code de démarrage relie les pièces :
eastmène de la bibliothèque au jardin etwestpermet de revenir - Affichez la description de la pièce où se trouve le joueur
- Affichez l’invite
"> "(signe supérieur suivi d’une espace) sans saut de ligne - Lisez la commande de l’utilisateur avec
io.read() - Vérifiez si la commande correspond à une clé de la table
exitsde la pièce actuelle - Si c’est le cas, mettez à jour
player.currentRoomavec la pièce associée à cette sortie - Si la commande est
"quit", définissezgameRunningsurfalsepour quitter la boucle
La boucle doit continuer jusqu’à ce que l’utilisateur saisisse "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 ; la description suivante continue donc 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
-- Définitions des pièces
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 = {}
}
-- Définir les sorties avec east / west
startingRoom.exits = {
east = gardenRoom
}
gardenRoom.exits = {
west = startingRoom
}
-- Joueur
local player = {
currentRoom = startingRoom
}
-- Boucle de jeu
local gameRunning = true
-- TODO: Écrire la boucle while ici
Toutes les leçons de Logique et déroulement du programme
1Itération avancée des tables
Itérer avec pairs()Itérer avec ipairs()pairs() contre ipairs()Récapitulatif - Fiche de personnage2Fonctions supplémentaires de la bibliothèque table
table.concat()construction de tables et unpack()table.sort()Tri personnalisé avec des fonctionsRécapitulatif - Tableau des meilleurs scores5Projet : moteur d’aventure textuelle
Configuration du projet : la pièceRelier les pièces3Concepts avancés des fonctions
Retourner plusieurs valeursFonctions variadiques (...)Les fonctions comme valeurs de première classeFonctions anonymesQu’est-ce qu’une fermeture ?Récapitulatif - Gestionnaire d’événements simpleEntraînez-vous par vous-même : Compilateur Lua en ligne