10-08-2011, 03:24 AM
(Modification du message : 30-09-2011, 02:35 PM par Sephi-Chan.)
Bonjour tout le monde,
Dans le cadre de mon jeu (http://nolaya.com), je rencontre un petit problème.
Je vais ajouter un système qui permet de "fusionner" des objets. Basiquement votre inventaire a 4 places, mais grâce a ces fusions, ceci n'est pas un problème. Pour ceux qui connaissent, ça reprends le principe des DOTA, de League of Legends et j'en passe.
En gros, il est donc possible de fusionner l'objet 1 et l'objet 2 pour obtenir l'objet 3.
Petit exemple pour illustrer mon propos
Et ensuite, un petit exemple de la structure de ma config (je mets simplement en PHP, c'est différent sur le jeu mais c'est assez lisible il me semble).
Voila donc en gros, les fusions pour chaque objet est dans le champ "requires" (si il existe biensur), sous forme de array, avec les ids des objets nécessaire. Jusque la, rien de bien compliqué, si je veux récupérer les "requires" des objets.
Mon problème se pose pour des fusions de plus haut niveau, par exemple pour l'objet 9 de mon image, car chaque objet connait uniquement les dépendances vers les 2 objets juste en dessous de lui. L'objet 9 sait donc uniquement qu'il est construit avec 5 et 6, mais ne sait pas avec quoi sont créer ces derniers.
Si je veux donc connaitre l’arborescence complète, je dois passer par une fonction récursif, qui me renverrais un array du genre:
C'est la que je bloque. Je ne vois pas quelle structure donner a ce tableau de l’arborescence complète d'un objet. J'en ai toutefois besoin pour par la suite afficher graphiquement l’arborescence, calculer des prix etc etc.
Imaginons que je veux fusionner 2 fois le même objet pour un obtenir un autre... paf, je ne peux plus utiliser les ids des objets comme clé dans mon tableau d’arborescence.
Bref je suis un peu perdu... Et si ça se trouve je fais fausse route sur ma conception.
Des pistes, des idées, voir même des solutions? Votre aide est vraiment la bienvenue!
Un grand merci d'avance a tous!
Zepp
Dans le cadre de mon jeu (http://nolaya.com), je rencontre un petit problème.
Je vais ajouter un système qui permet de "fusionner" des objets. Basiquement votre inventaire a 4 places, mais grâce a ces fusions, ceci n'est pas un problème. Pour ceux qui connaissent, ça reprends le principe des DOTA, de League of Legends et j'en passe.
En gros, il est donc possible de fusionner l'objet 1 et l'objet 2 pour obtenir l'objet 3.
Petit exemple pour illustrer mon propos
Et ensuite, un petit exemple de la structure de ma config (je mets simplement en PHP, c'est différent sur le jeu mais c'est assez lisible il me semble).
<?php
// halberd
$array[1] = array // le 1 correspond a l'id de l'objet
(
'quality' => 1,
'cost' => array('gold' => 800),
'effects' => array
(
'strenght' => array('att' => 250, 'def' => 250)
)
);
// amulet - mana
$array[2] = array
(
'quality' => 1,
'cost' => array('gold' => 1000),
'effects' => array
(
'production' => array('mana' => 10)
)
);
// fusion halberd - amulet
$array[3] = array
(
'quality' => 2,
'cost' => array('gold' => 1100),
'requires' => array(1, 2),
'effects' => array
(
'strenght' => array('att' => 500, 'def' => 500),
'production' => array('mana' => 20)
)
);
Voila donc en gros, les fusions pour chaque objet est dans le champ "requires" (si il existe biensur), sous forme de array, avec les ids des objets nécessaire. Jusque la, rien de bien compliqué, si je veux récupérer les "requires" des objets.
Mon problème se pose pour des fusions de plus haut niveau, par exemple pour l'objet 9 de mon image, car chaque objet connait uniquement les dépendances vers les 2 objets juste en dessous de lui. L'objet 9 sait donc uniquement qu'il est construit avec 5 et 6, mais ne sait pas avec quoi sont créer ces derniers.
Si je veux donc connaitre l’arborescence complète, je dois passer par une fonction récursif, qui me renverrais un array du genre:
C'est la que je bloque. Je ne vois pas quelle structure donner a ce tableau de l’arborescence complète d'un objet. J'en ai toutefois besoin pour par la suite afficher graphiquement l’arborescence, calculer des prix etc etc.
Imaginons que je veux fusionner 2 fois le même objet pour un obtenir un autre... paf, je ne peux plus utiliser les ids des objets comme clé dans mon tableau d’arborescence.
Bref je suis un peu perdu... Et si ça se trouve je fais fausse route sur ma conception.
Des pistes, des idées, voir même des solutions? Votre aide est vraiment la bienvenue!
Un grand merci d'avance a tous!
Zepp