JeuWeb - Crée ton jeu par navigateur
Nombre de tables - 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 : Nombre de tables (/showthread.php?tid=2424)

Pages : 1 2


RE: Nombre de tables - alfanor - 19-02-2008

J'avoue ne pas trop comprendre cette notion de "ressource étendue", de ce que je comprends les bâtiments, les habitants, les ressources seraient tous considérés comme étant des ressources ? (c'est là où je dois me planter je pense ...)

Mais si jamais c'est cela, pourrais tu détailler un peu plus le système car là je ne vois franchement pas comment ce serait censé fonctionner même de manière théorique.

Merci encore Smile


RE: Nombre de tables - alfanor - 22-02-2008

Euh il n'y a plus personne ? :pleure2:


RE: Nombre de tables - pascal - 22-02-2008

si si, mais déménagement en cours, changement de boulot, tout ça ...

j'essaye de voir lundi.

A+

Pascal


RE: Nombre de tables - alfanor - 22-02-2008

Ah ok, merci et bon déménagement / changement de boulot alors Smile


RE: Nombre de tables - alfanor - 26-02-2008

Désolé d'insister (enfin non pas vraiment, mais voilà :hahahahaSmile, juste pour remonter le sujet au cas où tu n'y penserais plus, car j'ai toujours pas compris l'histoire des ressources étendues ^^


RE: Nombre de tables - pascal - 26-02-2008

en gros il faut créer des "ressources" avec :
_ un nom
_ un type de ressource ( batiment, matière première, unités ...)
_ un ensemble de caractéristiques : attaque, défense... on met en commun si c'est possible ( genre des points de défenses pour des unités ou des batiments)
_ des caractéristiques valant zero si elles ne sont pas utilisées

ensuite il faut relier ces ressources à une liste de trucs à débloquer (à modéliser) :
pour monter au niveau 2 des soldats, il faut :
_ soldat niveau 1
_ de l'argent qui sera consommé
_ une école militaire

voilà en gros; les arbres des technologies ( style ogame ) peuvent donner des pistes sur les conditions à réunir pour débloquer de nouvelles ressources / unités / batiments.

A+

Pascal


RE: Nombre de tables - uriak - 26-02-2008

J'ai une bonne nouvelle : pour mon jeu, j'ai exactement le même problème ^^

Et j'ai donc retenu une certaine architecture, que je vais résumer.

Mes bâtiments ont tous les mêmes caractéristiques :

Nom, type, description, niveau, etc.

Par ailleurs ils ont besoin de ressources variées
Et ils peuvent selon leur type avoir d'autres caractéristiques par exemple

Transport : voie de communication (air, terre, mer), distance, coût de base, bonus de déplacement
Production : type, cadence, coût de production..
Soin : cadence, coût de base, limite de niveau.

évidemment pas de quoi faire une table unique, donc ce que je fais :

j'ai la table des instances de structures et celle des définition de structures : nous allons parler de cette dernière.

Elle a donc un champ type qui va permettre de savoir dans quelle table secondaire piocher. Tables secondaires de la forme
struct_trans : id_struct, range, type, cost, bonus...
struct_stock : id_struct, max_size, cluster_size, type..
struct_prod : id_struct, prod_type, cost, prod_val...

et à côté une table de liaison de ressources : id_ressources, id_structure, quantity... pas besoin d'expliquer ^^

Maintenant côté code comment ça se passe. Déjà je suis en POO.
J'ai une classe structure qui va chercher dans la DB les infos de l'instance et du type de structure, avec les caractéristiques communes.

Ensuite pour chaque spécialité j'ai une classe dérivée de structure, qui va chercher les infos particulières de la table secondaire, et possède les méthodes adaptées. Seulement, pour savoir construire un tel objet il faut déjà savoir la valeur de type pour une structure. J'ai donc adapté le constructeur de ces classes dérivée, pour qu'il prenne en entrée une structure déjà existance, recopie les infos de base et ajoute les siennes. Ce qu'il se passe donc en pratique, dans mon générateur de structures :

->On construit une structure -> on lit son type -> s'il existe on construit la structure spécialisée en lui passant la structure initiale (qui est détruite)
Code PHP :
<?php 
$struct
= new Structure($id);
switch (
$struct->GetType())
{...
case
'transport' :
$struct = new TransportStructure($struct);
break;
...
}

L'avantage, c'est de pouvoir gérer plus tard des structures hybrides... Si j'ai un siège de guilde qui fait à la fois office d'auberge et d'atelier, j'airai taper dans les tables secondaires des deux fonctions. Par contre, je ne sais pas si l'héritage multiple est possible en php, donc la forme de la classe finale est encore à chercher.

PS : en réalité les constructeurs des classes dérivées possèdent un autre mode (indiqué par un flag true/false) qui permet de construire directement depuis la BDD (avec un JOIN en plus). Cela permet de générer directement l'objet que l'on veut si l'on sait déjà à quel sous famille il appartient.


RE: Nombre de tables - alfanor - 27-02-2008

Je n'ai pas le temps de bien voir ce que tu as détaillé là, donc je vais juste me contenter de dire pour le moment que l'héritage multiple n'existe pas en php (comme en java quoi, on peut le "simuler" mais il n'existe pas.)

Pour le reste je vais me faire un petit MCD pour voir si j'ai bien compris puis je repasse :hahahaha:

Encore merci de votre aide :respect:


RE: Nombre de tables - uriak - 27-02-2008

okay... bon du coup mon système de constructeur devient assez utile

Explication imaginons que j'ai un bâtiment à la fois destiné à produire et à transformer

j'ai une entrée dans la table des struct_type correspondant à ce bâtiment.
une dans la table struct_prod et une dans struct_workshop qui pointent vers ce bâtiment.
plus une dans la table struct_multi pour les paramètres éventuels d'une telle multi structure.

En terme de code si je veux accéder aux fonctions de productions je n'ai qu'à faire.

Code PHP :
<?php 
public function GetProductionClass()
{
return new
ProductionStructure($this);
}

voire si je veux inclure tous les types d'un coup..
Code PHP :
<?php 
public function GetSubClass($type)
{
$classname = $type.'Structure';
require(
"./Structures/".$classname.".php");
return new
$classname($this);
}

j'ai donc créé la structure de production qui correspond à mon bâtiment, j'aurais accès à toutes les méthodes de productions et aux membres initialisés à partir de l'entrée dans struct_prod