voila, je poste car mon cerveau bloque. Je créer un jeu en JAVA, un jeu de combat en tour par tour. J'ai intégré des passifs (avec un arbre de talent) pour les personnages, certains passifs sont du genre "quand vous esquivez vous gagnez 1 de force". Le problème c'est que ce genre de passif j'en ais au moins 50 et que durant un combat quand je fais une esquive, je ne veux pas que mon programme cherche si le personnage à tel ou tel passif en rapport avec l'esquive pour appliquer un effet (si il en a un).
Du coup je me creuse la tête pour trouver un autre moyen mais je reste bloqué. J'aimerais entendre des suggestions avec si possible un minimum de détails (mon niveau en JAVA est plutôt débutant, comparativement au cours de cysboy sur ce site j'en suis a peu près après le swing, donc je ne connais pas le multithreading, le drag n drop et JDBC)
J'espère que quelqu'un pourra m'aider, merci de votre attention !
Tu pourrais utiliser un système d'événements: si un tel personnage a tel passif, lors de l'ajout du passif tu dis que si le personnage fait telle action (esquiver) alors il faut exécuter telle fonction (ajouter un point de force). Ainsi, à chaque esquive la force augmentera
Dans l'idée c'est bon mais en pratique je ne sais pas comment faire ça sans devoir rechercher pour voir si le personnage à un passif en rapport avec l'esquive parmi tous les passifs que le personnage peut avoir.
Je ne suis pas familier avec le langage java, mais ce que je ferais c'est lorsque tu ajoutes le passif au personnage, tu crées aussi une connexion entre sa fonction esquiver et une autre qui augmente sa force, ensuite si tu ajoutes un autre passif tu lieras deux autres fonctions, etc... Ça devrait être faisable!
non non j'ai pas dis que c'était pas faisable, j'ai dis que je ne voyais pas comment faire ça, en fait c'est le lien don tu parle que je n'arrive pas à faire, à la méthode esquive il faudrait rajouter une méthode ajouterforce() SI il a le passif. Mais je ne sais pas comment ajouter une méthode à une autre dans tel ou tel cas, à part en faisant une verif avec des if à rallonge.
Ou alors je ne comprend pas bien, et j'en suis désolé !
Il me semble donc que tu pourrais faire ça avec les classes Event et compagnie, par contre je ne pourrais pas t'en dire plus... renseigne-toi, sur la doc, sur le tuto de ce site peut-être, et sur google!
oui je cherche toujours beaucoup avant de poster, mais je ne trouve rien qui se rapproche de ce que j'ai envie de faire, d'où mon poste désespéré ici, merci pour ton aide en tout cas !
Je suis toujours preneur si quelqu'un à des précisions sur la manière de faire.
oui mais la c'est pour faire en sorte qu'un bouton modifie un objet or ce qu'il me faudrait c'est un bouton qui modifie une méthode (la méthode esquive).
Cela dit cette page est intéressante, merci pour le partage.
Ton passif s'enregistre en tant qu'écouteur des esquives de ton personnage. Lorsque ton personnage réalise une esquive, il notifie tous ses écouteurs d'esquive et le passif augmente la valeur d'esquive du personnage.
public interface EsquiveListener extends EventListener {
public void onEsquive(Personnage personnage);
}
public class PassifEsquive implements EsquiveListener {
public void activePassif(Personnage personnage) {
personnage.addEsquiveListener(this);
}
public void desactivePassif(Personnage personnage) {
personnage.removeEsquiveListener(this);
}
@Override
public void onEsquive(Personnage personnage) {
personnage.setEsquive(personnage.getEsquive() + 1);
}
}
ok d'accord, je commence à saisir le truc, et je peux appliquer ce procédé des qu'une valeur change en fait, par exemple des que les Points de vie sont modifiés lors d'un combat, je demande à la GUI d'afficher la nouvelle valeur.
Donc je créer une interface pour l'esquive, ou les Pv (les classes qui sont écoutées), et j’implémente les classes qui veulent écouter. Si le personnage esquive je lance onEsquive() et ça fait toutes les modifs en rapport avec l'esquive.
Maintenant que je connais le nom du truc ça va être plus facile pour me documenter, merci beaucoup !
je reviens, car j'ai encore quelques problèmes de compréhension et ça m'embrouille, il faut une interface pour "l'écouté" mais la en l’occurrence l'écouté c'est une méthode (la méthode esquive), est ce que je dois changer et essayer de passer l'esquive en classe ? Est ce que je dois créer une classe par passif (vu qu'ils agissent différemment) ?
Je comprend le principe mais je n'arrive pas du tout a le mettre en place, même en ayant regardé des tutos.
On peut toujours créer plus de classes, reste à déterminer si c'est pertinent. Tu écoutes la classe, et cette classe va notifier les écouteurs lorsque sa méthode sera appelée (en parcourant la liste et en appelant la méthode associée)
Pour l'instant le seul moyen que je vois c'est une classe qui gère les combats avec entre autre un boolean esquive, quand il change il appelle les passifs, les passifs sont des méthodes qui modifient le personnage donc si je veux pouvoir ajouter ou enlever un passif de la liste des écouteurs du boolean esquive, je vois pas d'autre moyen que de créer une classe par passif avec chacun une méthode onEsquive() , ou alors j'ai encore mal compris un truc ?
C'est une solution. Quand on parle conception il y a plusieurs moyens d'arriver à un même résultat, qui faciliteront plus ou moins les développements futurs
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
CTO Co-fondateur @ My Talent Manager : boostez votre carrière d'artiste | https://mytalentmanager.fr
CTO Co-fondateur @ My Talent Manager : boostez votre carrière d'artiste | https://mytalentmanager.fr
CTO Co-fondateur @ My Talent Manager : boostez votre carrière d'artiste | https://mytalentmanager.fr
CTO Co-fondateur @ My Talent Manager : boostez votre carrière d'artiste | https://mytalentmanager.fr