Qu’est-ce qu’une énumération ?
Fait partie de la section Logique et flux d’exécution du Journey GDScript de Coddy. Leçon 37 sur 78.
Certaines valeurs ne peuvent être que l’une de quelques options : un feu de circulation est rouge, jaune ou vert, et un joueur est inactif, en train de courir ou en train de sauter. Tu pourrais stocker l’option sous forme de nombre, avec 0 pour inactif et 1 pour en train de courir, mais chaque personne qui lit le code doit alors se souvenir de ce que signifie chaque nombre :
var state := 1
if state == 1:
print("Running")Une énumération (abrégée en « enum ») donne un nom à chaque option. GDScript numérote les noms pour toi, en commençant à 0 :
enum State { IDLE, RUN, JUMP }Tu écris maintenant State.RUN au lieu de 1 : le nom de l’énumération, un point et l’option. Le code indique ce que cela signifie :
var state := State.RUN
if state == State.RUN:
print("Running")Un enum est déclaré au niveau supérieur du script, à côté de func _ready(): et non à l’intérieur. Une ligne enum à l’intérieur d’une fonction provoque une erreur qui arrête le programme avant son exécution :
extends Node
enum State { IDLE, RUN, JUMP }
func _ready():
var state := State.JUMP
print(state) # 2Les options sont des constantes, donc State.RUN = 5 est une erreur. Une option mal orthographiée telle que State.RUNN est signalée avant l’exécution du programme, tandis qu’un nombre incorrect tel que 3 à la place de 2 passe inaperçu.
Défi
FacileLe programme lit un nombre entier compris entre 0 et 3 qui représente la météo. Donne des noms aux nombres avec une énumération et affiche un conseil.
- Au niveau supérieur du script, déclare une énumération nommée
Weatheravec les optionsSUNNY,CLOUDY,RAINYetSNOWY, dans cet ordre. - Compare
weatheraux options de l’énumération (et non aux nombres) et affiche une ligne :
Weather.SUNNY:Wear sunglassesWeather.CLOUDY:Bring a jacketWeather.RAINY:Take an umbrellaWeather.SNOWY:Build a snowman
Pour l’entrée 2, la sortie est :
Take an umbrellaEssayez vous-même
extends Node
# Déclare l'énumération Weather ici
func _ready():
var weather := int(OS.read_string_from_stdin())
# Compare weather aux options de l'énumération et affiche le conseil
pass
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Logique et flux d’exécution
1Les chaînes de caractères en profondeur
Méthodes des chaînesRechercher dans les chaînesRemplacer et supprimer les espacesDécouper et joindreRécapitulatif - Vérifier un nom d’utilisateur4Dictionnaires, partie 2
Dictionnaires imbriquésTableaux de dictionnairesFusionner des dictionnairesCopier des dictionnairesRécapitulatif - Compteur de fréquence7Énumérations
Qu’est-ce qu’une énumération ?Définir une énumérationValeurs d’une énumérationÉnumérations avec matchRécapitulatif - Feu de circulation10Fonctions avancées
Renvoyer plusieurs valeursFonctions lambda, partie 1Fonctions lambda, partie 2Récapitulatif - Tri avec lambdaFonctions récursives, partie 1Fonctions récursives, partie 2Récapitulatif - Somme d’un tableau imbriqué13Système de gestion des stocks
Présentation du projetAjouter un article2Prise de décision avancée
Correspondance avec des variablesGardes de correspondanceMotifs de tableauMotifs de dictionnaireVérifications d’appartenanceRécapitulatif – Analyseur de commandes5Application de carnet d’adresses
Afficher le menuAjouter un contact8Gestionnaire des dossiers étudiants
Aperçu du projetAjouter un étudiant3Tableaux multidimensionnels
Bases des tableaux 2DAccéder aux éléments d’un tableau 2DBoucles imbriquées avec des tableaux 2DRécapitulatif - Tableaux 2DTableaux irréguliersMotifs courants des tableaux 2DRécapitulatif - Plateau de jeu6Les ensembles avec les dictionnaires
Qu’est-ce qu’un ensemble ?Un dictionnaire comme ensembleAjouter et supprimerUnion et intersectionDifférence d’ensemblesRécapitulatif – Supprimer les doublons9Agrégation avancée de données
Additionner des valeursTrouver le minimum et le maximumTri personnaliséRécapitulatif - Trieur de dictionnairesEntraînez-vous par vous-même : Compilateur GDScript en ligne