1 votes

Comment éviter la duplication de code lors de la définition de nombreux objets avec des caractéristiques variées ?

Je pense que cela doit être un problème très courant en programmation de jeux où vous avez beaucoup de personnages avec diverses capacités.

Je utilise des protocoles pour définir les actions des personnages chaque fois que possible et l'héritage lorsque j'ai besoin que des objets partagent de grands blocs de code. Le problème avec les protocoles est qu'ils définissent seulement l'interface, donc l'implémentation est souvent un code dupliqué. Existe-t-il une meilleure approche à ce problème, ou dans ce cas, est-il acceptable d'avoir un peu de duplication de code? Il n'y a pas d'héritage multiple en Objective-C, donc c'est hors de question.

3voto

Firas Assaad Points 10339

C'est un problème fréquent avec l'héritage dans la conception de jeux. Vous pouvez essayer d'utiliser des composants à la place. Il existe différentes façons d'implémenter un système basé sur les composants, mais en général, une entité de jeu est un conteneur de composants et vous pouvez facilement réutiliser des composants pour différentes entités. Voici quelques autres ressources qui pourraient vous être utiles:

1voto

Kylotan Points 14114

"Je pense que cela doit être un problème très courant en programmation de jeux où vous avez beaucoup de personnages avec diverses capacités."

Non, généralement pas. Il semble que vous créez de nouvelles classes ou types pour chaque variété de personnage dans le jeu, alors que normalement nous créons simplement une classe Character et implémentons les différents comportements via différentes méthodes, ou des classes de comportements interchangeables. S'il y a des comportements très différents, il est courant de les mettre dans des scripts écrits dans un langage différent. Les nombreuses permutations de capacités différentes sont essentiellement un problème de données, pas un problème de code.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X