JeuWeb - Crée ton jeu par navigateur
[Résolu] Question pour une liste de construction - 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 : [Résolu] Question pour une liste de construction (/showthread.php?tid=781)



[Résolu] Question pour une liste de construction - Shudrum - 09-02-2007

Je sais, je vous embête, mais je bloque sur une organisation SQL, enfin, de base de donnée tout au plus ...

Comment organiseriez vous une liste de construction ?

Je ne sais vraiment pas comment faire, c'est con, mais vrai ...

Perso je mettais un timestamp et la construction dans la table même ou sont enregistrés toutes les valeurs de mes bases, mais cela ne marche pas pour une liste de construction.

Donc si quelqu'un pouvait juste m'éclairer ... Merci !


RE: Question pour une liste de construction - Seren - 09-02-2007

Pour tout ce qui est liste qui peut varier de façon importante le mieux c'est de créer une table dédiée.

construction_id | batiment_type | % de finition | id du constructeur | position |... (autre champ possible)

Et réguliérement tu augmentes le pourcentage. Quand tu arrives à 100% tu effaces la "construction" et tu crées une nouvelle entrée dans la table "batiment_construit".

Si tu préfère un time_stamp :

construction_id | batiment_type | date de fin | id du constructeur| position... (autre champ possible)

Réguliérement tu testes si date de fin < date actuel, et si oui tu fais : Suppression construction, création batiment construit.


RE: Question pour une liste de construction - Shudrum - 09-02-2007

Tout simplement ?

Bon, je me disais c'est trop facile ... Enfin, je me disais ... J'aurais fait un truc beaucoup moins poussé.

Merci beaucoup


RE: [Résolu] Question pour une liste de construction - denisc - 09-02-2007

Perso, j'affinerai un peu...
Je mettrai un autre timestamp: heure de DEBUT de la construction
en ajoutant un champ Temps de construction... et un champ ordre_construction
Ce qui permet de calculer l'ehure/date de fin
Ca permet aussi, avec la liste d'ordre de construction de créer une liste de listes de constructions... et pourquoi pas la possibilité de gerer l'ordre des constructions des batiments, après qu'ils aient été mis dans la liste, il sera alors possible de les réorganiser, puis de laisser faire pendant les 48 heures suivantes l'enchainement des constructions.

L'enchainement se fait simplement à l'aide de triggers... (Merci M$SQL Tongue) ou régulièrement lors de la lecture du contenu des positions, les login, les stats...


RE: [Résolu] Question pour une liste de construction - gtsoul - 10-02-2007

Je vois deux possibilités,

soit tu lances la construction et tu dis le batiment sera dispo à l'heure h
cad dans ta table batiment_joueur : id_batiment | id_joueur | time_construction
tu ne considère que "finis" les batiments dont le time_construction est inférieur au time actuel; les autres ne sont qu'en construction
Cette méthode est intéressante car elle t'évite une deuxième opération de type cron.

Soit tu te crées une table cron : id_tache | tache -ex : construction | para_construction (ex : id du batiment à construire |time_execution
et un cron qui va régulierement executer les taches contenues dans cette table.
Le fait de créer un batiment va l'inscrire dans la table cron (tache en attente), dès que la tache pourra etre réalisée, le cron créera une nouvelle ligne dans ta table batiment_joueur.

Personnellement, (pour le respawn des creatures), j'ai pris le premier principe.


RE: [Résolu] Question pour une liste de construction - denisc - 10-02-2007

C'est pour ça que j'aime MSSQL... Les procédures stockées, les Triggers, les Taches d'exécution... Ca simplifie grandement les BD... Et pas besoin d'utiliser un robot distant Tongue