godot:strategy_pattern
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| godot:strategy_pattern [2024/08/18 14:21] – ilan | godot:strategy_pattern [2024/08/18 20:53] (Version actuelle) – ilan | ||
|---|---|---|---|
| Ligne 3: | Ligne 3: | ||
| Strategy Pattern : | Strategy Pattern : | ||
| Idée c'est de faire du code modulable. Le code fait appel à une fonction qui est ailleurs. | Idée c'est de faire du code modulable. Le code fait appel à une fonction qui est ailleurs. | ||
| - | On créer | + | On crée un script global avec une fonction qui ne fait rien (pass ou autre) puis des sous scripts qui étendent le script global, avec des fonctions spécifiques. |
| Exemple avec un filtre de nombres, on aurait : | Exemple avec un filtre de nombres, on aurait : | ||
| Ligne 100: | Ligne 100: | ||
| pass | pass | ||
| </ | </ | ||
| + | |||
| + | Ensuite on créer une ressource qu'on attache à des objets, une Area2D avec une CollisionShape2D, | ||
| < | < | ||
| + | @export var upgrade_label : Label | ||
| + | @export var sprite : Sprite2D | ||
| + | @export var bullet_strategy : BaseBulletStrategy | ||
| + | |||
| + | func _ready() -> void: | ||
| + | | ||
| + | | ||
| + | | ||
| + | |||
| + | func on_body_entered(body: | ||
| + | if body is Player: | ||
| + | body.upgrades.append(bullet_strategy) #on ajoute la stratégie dans la liste des upgrades du joueur | ||
| + | queue_free() | ||
| + | |||
| </ | </ | ||
| + | |||
| + | Finalement, l'arme applique toutes les stratégies comme cela | ||
| < | < | ||
| + | @onready var player : Player = get_owner() | ||
| + | |||
| + | for strategy in player.upgrades: | ||
| + | | ||
| </ | </ | ||
| + | |||
godot/strategy_pattern.1723990896.txt.gz · Dernière modification : de ilan
