Menu
CoddyTech

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) # 2

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

challenge icon

Défi

Facile

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

  1. Au niveau supérieur du script, déclare une énumération nommée Weather avec les options SUNNY, CLOUDY, RAINY et SNOWY, dans cet ordre.
  2. Compare weather aux options de l’énumération (et non aux nombres) et affiche une ligne :
  • Weather.SUNNY : Wear sunglasses
  • Weather.CLOUDY : Bring a jacket
  • Weather.RAINY : Take an umbrella
  • Weather.SNOWY : Build a snowman

Pour l’entrée 2, la sortie est :

Take an umbrella

Essayez 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
quiz iconTestez-vous

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

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