Communauté

Comment faire un re...
 
Notifications
Retirer tout

[Résolu] Comment faire un regroupement de plusieurs variables dans une seule variable, pour ensuite en faire une valeur d'une variable complexe ? Please

6 Posts
3 Utilisateurs
1 Likes
43 Vu
0
Début du sujet

Bonsoir tout le monde !

Je viens d'arriver sur GameCodeur, pour réaliser mon rêve de travailler dans le jeu-vidéo.

Je suis en train d'apprendre les bases ça va ça se passe mais j'ai un problème sur l'exercice de création de personnage de RPG.

 

En fait j'aimerais donner plusieurs valeurs au perso, et que ce soit elles-mêmes des regroupements de plusieurs valeurs.

 

Exemple : heros = { caractéristiques, inventaire, magie )

 

caractéristiques = {}

caractéristiques.nom = "snake"

caractéristiques.vies = 100

 

inventaire = {}

inventaire.armes = 100

inventaire.boucliers = 7

 

pareil pour magie 

 

Je vous envoie une capture d'écran, j'ai pas compris l'explication dans le chat 😓 

 

Merci pour votre aide et portez-vous bien !

 

 

 

Deesla Deesla Début du sujet 17/11/2022 10:44
Capture d’écran (2)
Étiquettes du sujet
4 Réponses
1

@deesla 

Tout d'abord il est important que tu intègres que ton programme est interprété dans l'ordre de tes lignes de code.

Tu ne peux donc pas commencer par :

heros = { caractéristiques, inventaire }

Car à ce stage, caractéristiques et inventaire n'existent pas encore.

(au passage ne mets pas d'accent, les langages de programmation les refusent, donc ton code ne fonctionnera pas avec "caractéristique")

Donc, commence par déclarer et initialiser caractéristiques et inventaire (et la magie dans ton exemple) AVANT de les intégrer à héros.

Ensuite, pour intégrer tes tables "caracteristiques" et "inventaire" dans ton "heros" il faut considérer que chacune de ces tables est un membre de heros.

Exemple qui fonctionne :

heros = {}

heros.caracteristiques = {}

heros.caracteristiques.nom = "snake"

heros.caracteristiques.vies = 100

heros.inventaire = {}

heros.inventaire.armes = 100

heros.inventaire.boucliers = 7

 

Tu pourras ensuite accéder à tes membres et sous-membres en écrivant le chemin complet pour les atteindre :

print(heros.caracteristiques.vies)

 

Ce que je peux rajouter c'est que tu vas un peu vite. Avance sur la suite. Là cet exemple était fictif et il faut avancer pour voir dans quels cas les tables et variables complexes (tables Lua) sont utilisées dans la vraie vie.

0

@deesla Salut personnellement je n'agrandirai pas les tables... sinon tu vas te perdre un certain moment. je ferais des tables bien spécifique.

héro={nom = "Snake" ,vie = 100, faim = 100, soif = 100} par exemple

inventaire = {}

armes = {}

magie = {}

le 3 tables vides te serviront pour insérer les différents éléments pour qu'ils soient indépendant dans ton code. Sinon à un moment donné tu vas te perdre et ton code sera long. Ce que je veux dire par la c'est que si tu fais des tables différentes tu pourras plus les détailler sans te perdre.

 

 

 

0
Début du sujet

Aahh ok j'ai compris super !

 

{} comme valeur de heros signifie : c'est une table et après je peux y insérer des trucs comme ça. J'en étais pas loin mais j'avais plus pensé que le code s'exécute dans l'ordre.

 

Merci David et Bretz pour vos conseils j'en prends note, à bientôt et que la force soit avec vous ! 

0
Début du sujet

J'ai encore une question en fait, je pense que c'est bon là je vous montre, mais ça change quoi si je mets local avant heros ?

Capture d’écran (4)
Capture d’écran (5)

 

David de Gamecodeur David de Gamecodeur 19/11/2022 6:22

@deesla 

Le mot clé local va rendre la variable "locale" au bloc de code qui la contient.

Un bloc de code c'est soit un fichier lua si le code est écrit à la racine, soit une fonction, soit un if, soit un for.

Dans ton cas, quand on a un seul fichier main.lua ça n'a pas d'importance. Mais à l'intérieur d'une fonction ou d'un if/for il faut toujours ajouter "local" sinon la variable devient une variable globale dont la valeur va persister et rentrer en conflit avec d'autres variables du même nom, etc.

Répondre
Share:

Dialoguez avec les autres membres de la gamecodeur school.

Accédez maintenant à notre serveur Discord privé : Entraide, Game Jams, Partage de projets, etc.

Vous devez être membre de la Gamecodeur School Premium pour être autorisé à accéder au serveur.