J'écris un jeu Pokémon (actuellement) à la chaîne à Java. Avec la structure que j'ai, il existe actuellement 2 types d'objets que je souhaite faire des correspondances pour: pokemon et mouvements. La méthode que je veux écrire (IsstrongagaintSt ()) serait la même pour les deux. Par exemple, un pokémon de type eau et un mouvement de type eau sont forts contre le pokémon de type incendie, mais ces comparaisons peuvent impliquer des choses différentes basées sur le contexte. Les deux classes ont des méthodes implémentées différemment.
L'idée que j'avais était d'utiliser une interface implémente une méthode IsstrongagainSt () par défaut et déclare une méthode abstraite isType (). Je penserais que depuis n'importe quelle classe qui implémente cette interface devrait mettre en œuvre ISTYPE (), je pourrais l'utiliser dans mon Isstrongagaint (), mais je ne peux pas. Y a-t-il un moyen autour de cela ou une meilleure suggestion compte tenu de mon problème? P>
public interface TypeMatch<T> { boolean isType(Type t); default boolean isStrongAgainst(Pokemon opponent){ if(T.isType(Type.NORMAL)){ return false; } if(T.isType(Type.WATER)){ return opponent.isType(Type.FIRE) || opponent.isType(Type.ROCK) || opponent.isType(Type.GROUND); } //etc...
3 Réponses :
En ce qui concerne la compréhension, votre jeu contient différents comportements en fonction du type de pokemon. Je vous recommande vivement d'utiliser modèle de conception de stratégie . p>
Bonjour Orkun. Cela aurait pu être un commentaire. Évitez de donner des réponses à une ligne car cela n'aide pas beaucoup.
Ce que je pense, c'est que la fonction Ceci peut ensuite être utilisé dans la fonction meilleur p>
PS: em> Je suis en classe en ce moment et je vais donner une réponse plus détaillée après que je suis fini avec elle, jusqu'à ce que possible, essayez d'avoir une idée de ce que j'ai dit. < / p> isstrongagainst () code> peut être plus affinée.
Il serait préférable de faire une implémentation de
istype () code> de manière à renvoyer
vrai code> si l'adversaire est plus faible que nous. P>
isstrongagaint () code> directement dans son état de retour. p>
Vous pouvez: p>