- GDScript 100%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| assets | change letter highlight colors | |
| readme | add readme | |
| scenes | clear unnecessary unique names | |
| src | add further comments | |
| .editorconfig | first commit | |
| .gitattributes | first commit | |
| .gitignore | first commit | |
| project.godot | fix: missing action | |
| README.md | improve readme | |
Motus
Comment jouer
Cette archive ne contient pas d'exécutables.
- Installez Godot Engine.
- Importez le project dans Godot.
- Lancez le jeu (F5).
Structure du code
GameManager est responsable de la gestion complète du jeu. Tout le jeu se déroule dans une seule scène, car il ne requiert pas de complexité additionnelle.
Pour afficher les mots et leurs lettres plus facilement, GameManager instancie une scène de la classe Word, qui anime l'apparition des lettres, elles-même instanciées de la classe Letter qui gère l'affichage d'une lettre en fonction de son état (correcte, mal placée, incorrecte).
Les scripts dans src/gui/ sont des utilitaires pour afficher un slider et une entrée de nombre couplées plus facilement. Ces scripts sont tirés du code de Godot Dash.
Le script dans src/static/ est une dépendance pour les scripts dans gui/.
Il contient une fonction qui permet de créer un objet dans l'arborescence d'une classe arbitraire et de le nommer, en une seule ligne.
Différences notables entre Python et GDScript
GDScript a une syntaxe similaire à celle de Python, mais a quelques différences avec ce dernier :
- Chaque fichier ("script") est une classe. Le nom de la classe est optionel et est inscrit après
class_name. La classe parent est inscrite après le mot-cléextends.
- Si le script n'a pas de nom de classe, son type est considéré comme celui de la classe parent.
- Le typage est dynamique, mais ajouter un type à la déclaration d'une variable rend le typage strict sur cette variable (le type ne peut plus changer).
- On peut ajouter du typage à des variables de deux manières :
- Explicite :
var x: int = 0 - Déduit :
var x := 0, souvent utilisé lorsque l'expression d'initialisation contient le type, e.g.var file_access := FileAccess.open("/path/to/file")
- Explicite :
- GDScript a plusieurs types pour représenter des listes :
Array, qui peut être typé (Array[float]par exemple) et qui peut représenter une collection de types quelconques.- Tous les types
Packed*Array(e.g.PackedFloat64Array) qui sont optimisés en mémoire pour contenir un type unique.
- Les variables sont initialisées avec le mot-clé
var. - Les fonctions sont initialisées avec le mot-clé
funcau lieu dedef, et une absence de valeur renvoyée est marquée avec-> voidau lieu de-> None. - GDScript a des constantes, initialisées avec
const. - GDScript a des énumérations, initialisées avec
enum. - GDScript a des variables statiques, initialisées avec
static var, dont la valeur est commune à toutes les instances. - GDScript a des fonctions statiques, initialisées avec
static func, qui peuvent être appelées sans instance (analogue à@staticmethoden Python). - GDScript a des signaux, initialisés avec
signal, qui peuvent être émis (e.g.value_changed.emit(new_value)) et qui exécutent des fonctions-receveurs (e.g._on_value_changed(new_value: float)). - On peut définir des setters et getters pour les variables, qui exécutent implicitement du code lorsque la variable est modifiée ou qu'on récupère sa valeur.
- Il existe plusieurs annotations pour les variables. Les plus notables sont :
@exportqui rend la variable accessible dans l'inspecteur de Godot et sauvegarde sa valeur dans la scène (fichier.tscn).@onreadyqui initialise la variable quand une instance de la classe est ajoutée à l'arborescence de la scène et que ses nœuds enfants sont initialisés.
- Godot fonctionne avec des scènes en arborescence.
- Toutes les classes qui peuvent être représentées dans l'arborescence héritent de la classe
Node.- Pour ces classes-là,
_readys'exécute quand les nœuds enfants sont initialisés et dans l'arborescence, et_processs'exécute à chaque image affichée par le jeu.
- Pour ces classes-là,
- On peut prendre une référence à un nœud enfant avec le shorthand
$A/B/C. - Certains nœuds peuvent être marqués comme "à nom unique" et on peut alors obtenir une référence avec le shorthand
%NomUniquedepuis n'importe quel nœud parent dans l'arborescence.
- GDScript a plusieurs types pour les strings :
String, le type par défaut, délimité par"".StringName, qui représente des strings uniques et immutables (e.g. des noms d'actions pourInput.is_action_pressed), délimité par&"".NodePath, qui représente un chemin dans l'arborescence ou dans les membres d'une instance de classe, délimité par^"".
- Par convention, les fonctions dont le nom est préfixé par un underscore sont privées, et les fonctions dont le nom commence par
_on_...sont des récépteurs de signaux. - GDScript a des types primitifs pour représenter certaines choses utiles dans le contexte d'un jeu vidéo (e.g.
Vector2ouColor). - L'interpolation de strings peut se faire par concaténation ou avec une syntaxe similaire à C (
"J'ai %s pommes" % nombre_pommesqui donne"J'ai 4 pommes"). - On peut attendre l'émission d'un signal avec le mot-clé
await, e.g.await timer.finished.