10-04-2009, 02:59 PM
Bon alors comme le disais rorchar il faut faire une fonction (ou une méthode si tu le fait en POO) pour chaque action.
Et comme dit précédemment ce qui se passe à l'intérieur ne doit pas être important à l'extérieur, tout ce qui compte c'est que depuis l'extérieur on sache l'action qui a été faite:
- construire_batiment()
si tu utilises çà, tu sais que ton bâtiment est construit sans forcément savoir comment!
Maintenant c'est bien beau mais effectivement il faut encore coder l'intérieur des fonctions. C'est à l'intérieur que çà va accéder à ce qui va retenir les données, et là tu as le choix:
- passer par une table de bdd
- passer par des fichiers (comme tes array actuellement mais pour modifier/créer de nouveau type de bâtiment il faudrait alors éditer ces array en gros générer un fichier php...)
Bon je te conseille la bdd c'est ce qui est le plus simple
Et donc là comme dis précédemment, l'erreur serait de faire une table par bâtiment.
En gros moi je verrais bien pour ce que tu décris ces 3 tables:
Batiment_type(#id=>Int, nom=>String)
Batiment_evolution(#id_type=>Batiment_type, #niveau=>Int, cout_bois=>Int, cout_pierre=>Int, cout_fer=>Int, cout_population=>Int, point=>int)
Batiment(#id_joueur=>Joueur, #id_type=>Batiment_type, niveau=>Int)
Ainsi si tu veux ajouter un bâtiment au bâtiment possible (action admin), il faut:
Insérer(INSERT) un enregistrement avec le nom dans Batiment_type
Insérer les enregistrement concernant l'évolution des batiments dans Batiment_evolution, un enregistrement par niveau.
Pour construire un batiment (action joueur):
Insert d'un enregistrement dans Batiment avec l'id du joueur et le type de batiment ainsi que le niveau 1
Faire évoluer un batiment (action joueur):
UPDATE mettant le niveau=niveau+1 dans l'enregistrement concerné de Batiment
Détruire un batiment (action joueur):
DELETE supprimant l'enregistrement représentant ce batiment dans la table Batiment
Par contre c'est plus dur de supprimer complètement un bâtiment des bâtiment possible car çà peut sous entendre de supprimer les bâtiment de ce type des joueur...
Voilà selon moi à quoi devrait ressembler tes tables
NB: concernant la table Batiment_evolution, une autre méthode pourrait être de trouver une formule mathématique qui calcul le cout en fonction du niveau. Ce serait moins couteux en place et en ressource et çà supprime cette table
par exemple le cout en bois pourrait etre
cout bois = niveau*facteur_bois_du_batiment+cout_plancher
facteur_bois_du_batiment et cout_plancher serait alors des colonne de la table Batiment_type
Je peux etre plus précis, si besoin, faut demander
Et comme dit précédemment ce qui se passe à l'intérieur ne doit pas être important à l'extérieur, tout ce qui compte c'est que depuis l'extérieur on sache l'action qui a été faite:
- construire_batiment()
si tu utilises çà, tu sais que ton bâtiment est construit sans forcément savoir comment!
Maintenant c'est bien beau mais effectivement il faut encore coder l'intérieur des fonctions. C'est à l'intérieur que çà va accéder à ce qui va retenir les données, et là tu as le choix:
- passer par une table de bdd
- passer par des fichiers (comme tes array actuellement mais pour modifier/créer de nouveau type de bâtiment il faudrait alors éditer ces array en gros générer un fichier php...)
Bon je te conseille la bdd c'est ce qui est le plus simple
Et donc là comme dis précédemment, l'erreur serait de faire une table par bâtiment.
En gros moi je verrais bien pour ce que tu décris ces 3 tables:
Batiment_type(#id=>Int, nom=>String)
Batiment_evolution(#id_type=>Batiment_type, #niveau=>Int, cout_bois=>Int, cout_pierre=>Int, cout_fer=>Int, cout_population=>Int, point=>int)
Batiment(#id_joueur=>Joueur, #id_type=>Batiment_type, niveau=>Int)
Ainsi si tu veux ajouter un bâtiment au bâtiment possible (action admin), il faut:
Insérer(INSERT) un enregistrement avec le nom dans Batiment_type
Insérer les enregistrement concernant l'évolution des batiments dans Batiment_evolution, un enregistrement par niveau.
Pour construire un batiment (action joueur):
Insert d'un enregistrement dans Batiment avec l'id du joueur et le type de batiment ainsi que le niveau 1
Faire évoluer un batiment (action joueur):
UPDATE mettant le niveau=niveau+1 dans l'enregistrement concerné de Batiment
Détruire un batiment (action joueur):
DELETE supprimant l'enregistrement représentant ce batiment dans la table Batiment
Par contre c'est plus dur de supprimer complètement un bâtiment des bâtiment possible car çà peut sous entendre de supprimer les bâtiment de ce type des joueur...
Voilà selon moi à quoi devrait ressembler tes tables
NB: concernant la table Batiment_evolution, une autre méthode pourrait être de trouver une formule mathématique qui calcul le cout en fonction du niveau. Ce serait moins couteux en place et en ressource et çà supprime cette table
par exemple le cout en bois pourrait etre
cout bois = niveau*facteur_bois_du_batiment+cout_plancher
facteur_bois_du_batiment et cout_plancher serait alors des colonne de la table Batiment_type
Je peux etre plus précis, si besoin, faut demander