JeuWeb - Crée ton jeu par navigateur
Affichage arbre technologique - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Affichage arbre technologique (/showthread.php?tid=6328)

Pages : 1 2 3


RE: Affichage arbre technologique - Racktor - 17-10-2012

Auriez-vous une solution pour mon problème d'arbre technologique ?


RE: Affichage arbre technologique - Xenos - 17-10-2012

Je ne comprends pas bien le soucis...
C'est un graphe (et non un arbre en fait) des technologies:
Pour chaque recherche, à voir comme un objet de la classe "Recherche", il te suffit de définir quelles sont les recherches qui en découlent...

Sous la forme d'un tableau par exemple:
Recherche.permet[id_race] = Array(id_recherches_permises,...) => La recherche "Recherche", d'id quelconque, permet à la race, une fois la technologie découverte, d'accéder aux recherches désignées dans le tableau.

A parti de cela, tu peut constuire, pour chaque recherche, le vecteur des antécédents pour chaque race:
Recherche.antecedent[id_race] = Array(id_recherches_requises_pour_Recherche,...)

Du coup, pour l'affichage, il n'y a plus qu'à récupérer les recherches qui n'ont aps d'antécédent pour une race donnée, puis de récupérer toutes les recherches permises par ces recherches "de base".
Pour les relier l'une à l'autre, 2 div devraient suffire, formant un L ou un I ou un _ suivant la position des recherches dans le tableau d'affichage (dans la colonne de gauche, il y aurait les recherches de base, dans la colonne 2, il y aurait les recherches directement permises par la colonne 1, etc... bref, le tableau est de sorte que les recherches de la colonne N ne demande QUE des recherche des colonnes précédents <N). Pour savoir dans quel colonne se trouve une recherche, il faut effectuer une recherche du chemin critique (les premières recherches sont en colonne1, puis, pour chaque recherche de la race, le numéro de la colonne est le max() des numéro des colonnes des recherches antécédentes, si elles sont définies; si elles ne sont pas définies, elle le seront au prochain calcul du max)

Mais j'suis peut-être à coté de la plaque (bien qu'ayant relu ce topic)