JeuWeb - Crée ton jeu par navigateur
Ou stocker les conditions pour améliorer les batiments ? - 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 : Ou stocker les conditions pour améliorer les batiments ? (/showthread.php?tid=840)

Pages : 1 2


Ou stocker les conditions pour améliorer les batiments ? - NehutoX - 20-02-2007

Bonjour à tous, je suis en train de developper un petit jeu (comme beaucoup de monde ici) et je me trouve confronté à un problème : j'ai développé un système pour l'augmentation des ressources par rapport à la production des batiments etc... mais un problème se pose quand au fait de savoir où stocker dans la BDD les conditions à remplir pour passer au niveau supérieur du batiment ainsi que le temps de construction nécéssaire.

Dois-je créer une table spécifique ou alors dois-je rajouter tout cela dans la table des batiments ?

Merci par avance !


RE: Ou stocker les conditions pour améliorer les batiments ? - Seren - 20-02-2007

Il faut une table qui contient les bâtiments construits dans le jeu actuellement et une autre "structure" qui contient les caractéristiques des bâtiments comme par exemple l'augmentation des ressources.

A priori les caractéristiques sont constantes donc au choix une table ou un tableau.

Par exemple :
table bâtiment:
(id, bat_type, propriétaire, .....)

(1, 'ferme', 'joueur1', ....)

et à côté
table bât_caracterisitque
(bat_type, coût, gain ressource, ....)

OU un tableau $ferme ou $bâtiment avec
$batiment['ferme']['gain_ressource'] = 5 ou $ferme['gain_ressource'] = 5;


RE: Ou stocker les conditions pour améliorer les batiments ? - NehutoX - 20-02-2007

Seren a écrit :et à côté
table bât_caracterisitque
(bat_type, coût, gain ressource, ....)

Mais comment lui indiquer celà pour chaque niveau ?


RE: Ou stocker les conditions pour améliorer les batiments ? - Seren - 20-02-2007

Dans la table Bâtiment tu ajoutes un champ "niveau".

Et ensuite tu utilises la formule de ton choix, genre :
$ gain_ressource = 10 * $niveau.


RE: Ou stocker les conditions pour améliorer les batiments ? - NehutoX - 20-02-2007

Thank you, je vais tester ça et je te tien au courant !


RE: Ou stocker les conditions pour améliorer les batiments ? - Meardon - 30-07-2008

Bonjour,

J'aurais une question directement avec ce topic fraîchement déterré :heuuu: :

Que convient-il mieux d'utiliser pour stocker les caractéristiques de ses bâtiments ? Une table dans la base de données ou un fichier php par bâtiment ?

Merci d'avance !


RE: Ou stocker les conditions pour améliorer les batiments ? - z3d - 30-07-2008

L'un et l'autre sont valable mais personnellement je préfère un stockage bdd pour simplifier la modification ou l'ajout de contenu, couplé avec un système de cache.


RE: Ou stocker les conditions pour améliorer les batiments ? - Cartman34 - 31-07-2008

Perso, je te conseille un fichier PHP...car ce sont des données qu'on ne modifie pas souvent.


RE: Ou stocker les conditions pour améliorer les batiments ? - Argorate - 01-08-2008

Je prefere la BDD en l'occurence pour les batiments, mais on ne va pas repartir sur un debat qui a deja eu lieu sur un autre topic.

Sinon pour se qui est du stockage de condition, pour ceux que cela interesse:

si vous avez un arbre tech de batiment, et qu'il vous faut un batiment x ou y pour pouvoir construire le batiment z, je vous conseil alors de faire une chose tres simple:
un champ texte.
ensuite il suffit d'ecrire l'ID des batiments requis: "1;5;11;299", ainsi avec un simple sépaprateur et un bon split, on obtient qu'il faut avoir les batiments qiu on pour ID : 1, 5, 11 et 299 pour créé ce batiment.

Ensuite si il y a plusieur niveau pour un meme batiment, il suffit de rajouter un autre séparateur:
"1:1;5:2;11:3;299:1"
ainsi on sait qu'il faut le batiment d'ID 1 au niveau 1, le batiment 5 au niveau 2 etc...

vilou Wink


RE: Ou stocker les conditions pour améliorer les batiments ? - z3d - 01-08-2008

@Argorate > Ce que tu dis est absolument absurde; attention ne prends pas cela pour une attaque; voici pourquoi.

Utilisez une base de données et ce servir d'un champ dans lequel tu concatènes les pré-requis est un non sens, tu y perds la philosophie d'une base de données qui se veut être une structuration atomique de tes données. De plus, tu perds plus en pratiquant cette technique qu'en utilisant la base de données telle qu'elle doit l'être.

Une modélisation correct de ta base de données, te permet en une seule requête de récupérer des données structurées. Hors là, avec cette technique tu es obligé de traiter une nouvelle fois les données pour en retirer la quintescence. C'est une perte en temps et en ressources.

Donc plutôt que de faire de la concaténation, il faut une table qui contient autant d'entrée que nécessaire pour les prérequis d'une construction.

Voici un exemple :
Un bâtiment : Réservoir de Gazoil
Ses prérequis : Puit de pétrole niveau 1, Pipeline niveau 1

Supposons que le Réservoir de Gazoil possède l'identifiant 50, le Puit de pétrole possède l'identifiant 15 et le Pipeline possède l'identifiant 24.

La table des prérequis contiendra 2 entrées structurées comme ci-suit :
prerequis(id_construction, id_construction_requise, niveau_construction_requise);
prerequis(50, 15, 1);
prerequis(50, 24, 1);

Ainsi, il est plus aisé au travers de requête, sous-requête de savoir si il est possible de créer ce dit bâtiment.