Salut,
ca me paraît impossible mais je me demandais s'il y avait un moyen de connaître toutes les classes filles d'une classe mère ?
Merci d'avance.
Salut,
ca me paraît impossible mais je me demandais s'il y avait un moyen de connaître toutes les classes filles d'une classe mère ?
Merci d'avance.
En effet, il n'y a pas de moyens simples de déterminer les sous classes d'une classe donnée. Néanmoins, il semble que ce soit possible en parcourant toutes les classes ; ce qui n'est vraiment pas optimisé...
tu peux lire ceci : http://forum.java.sun.com/thread.jsp...sageID=9680662
et cela :
http://forum.java.sun.com/thread.jsp...sageID=1816373
Salut,
tu as une idee derriere la tete? je suis curieux, quel est le besoin?
Hello,
merci bien pour les liens ^^. Effectivement sans avoir tout détaillé ca me paraît très laborieux et peu efficace.
Le but est d'éviter des tests de collision/intersection dans un moteur physique entre certaines classes.
Ex pour un shoot'em up : classes :
Shot <- PlasmaShot
Shot <- LaserShot
Shot <- MissileShot
Shot <- etc.
Les tests ne doivent pas être évalués entre les différentes instances de ces classes. La soluce que j'utilise pour l'instant est de stocker une liste de classes à ne pas évaluer le souci et que je dois le faire pour chaque classe et ce n'est pas très pratique en plus ca implique une recherche dans les listes à chaque cycle qui peut être relativement coûteuse.
ex, pour les constructeurs :
et dans le cycle du moteur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 PlasmaShot() { this.addUncollidableClass(LaserShot.class); this.addUncollidableClass(MissileShot.class); this.addUncollidableClass(etc.); } LaserShot() { this.addUncollidableClass(PlasmaShot.class); this.addUncollidableClass(MissileShot.class); this.addUncollidableClass(etc.); }
Je fonctionne également avec un test d'exclusivité plutôt qu'un test d'exclusion mais le problème est le même (addCollidableClass()).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 if(!solid1.isUncollidableClass(solid2)) { // Tests d'intersections }
Il y a sans doute un problème de conception mais je n'ai pas trouvé mieux pour l'instant.
(D'ailleurs je m'aperçois qu'il faut que je stocke cette liste en statique plutôt que dans chaque instance)
Pourquoi ne pas utiliser un fichier de configuration qui ferait tout ça ?
Un zouli petit fichier XML genre :
Après, tu peux même gérer les autres données directement dans ton fichier de configuration (les dégâts, l'ampleur) et délaisser la partie de gestion de ces données à la classe liée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 <shot type="plasma" class="my.package.PlasmaShot"> <uncollides type="laser" /> <uncollides type="missile" /> ... </shot> <shot type="laser" class="my.package.LaserShot"> <uncollides type="plasma" /> <uncollides type="missile" /> ... </shot>
Salut,
Comment gères tu tes collisions ?
J'avais fait un jeu de shoot et on avait utilisé des instanceof tout simplement, si c'est un shoot ca peut pas entrer en collision avec un autre shoot
donc j'avais une fonction collide(Element e) et tout dérivait d'élément (acteurs, tirs, bonus), et je faisais :
F.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 if(e instanceof Shoot); // ne rien faire else { // traiter la collision selon les autres instanceof }
Partager