22-08-2009, 07:51 PM
(Modification du message : 22-08-2009, 07:54 PM par Sephi-Chan.)
Bonjour,
Concernant les coûts de tes bâtiments, je t'invite à intégrer ça dans la base de données plutôt qu'en dur dans ton code.
Concernant le niveau de tes joueurs, etc. Il s'agit simplement d'avoir un champ qui contient ce niveau dans la table des joueurs. Ensuite, à toi de voir sous quelles conditions tu fais monter le niveau d'un joueur.
Pour les bâtiments, c'est un peu spécial. Généralement, on stocke dans une table à part les différents bâtiments et ensuite, on associe un joueur à un bâtiment grâce à une table qui stock l'ID du bâtiment, l'ID du joueur et les informations propres à cette instance du bâtiment, par exemple le niveau. Ainsi, il est simple de savoir que le joueur Robert (d'id 7) possède un bâtiment Caserne (d'id 32) de niveau 4 et un bâtiment Café (d'id 21) de niveau 2.
Au sujet des liens vers la création vers les bâtiments, GET semble être la bonne méthode. Tu aurais ainsi des liens de la forme /build.php?id=32.
Enfin, pour la partie temporelle, ça ne se fait pas côté Javascript comme tu peux le penser. Javascript doit rester une façade. Je te conseille de stocker la date du lancement de la construction dans la table qui associe un joueur à un bâtiment. Ensuite, avec un daemon, un cron ou un script appelé quand le joueur revient sur la page, tu vérifies si le temps actuel est supérieur à la date de lancement de la construction à laquelle tu additionnes la durée de construction du bâtiment et comme ça tu sais si on bâtiment est fini ou non.
Enfin, pour le framework, je te conseille d'attendre de maîtriser mieux PHP et l'orienté objet. Et oui, la POO est un atout majeur dans le développement d'application complexes comme le sont les jeux. Ça rend ton code plus clair et facile à maintenir.
Quelques exemples des atouts de la POO dans un jeu :
Quand ton utilisateur effectue une action qui lui rapport de l'expérience, tu peux appeler sur l'objet User (qui le représente) la méthode addExperience(quantity), qui augmente sa quantité d'expérience et lui fait éventuellement gagner un niveau (en appelant la méthode levelUp(), bien sûr).
De même, pour les bâtiments, on peut admettre qu'un objet User possède une méthode getBuildings() qui renvoie un tableau d'objets Building.
Ainsi, quand on va sur la page de création d'un bâtiment (après avoir cliqué sur le lien vu plus haut ), tu instancie un objet Building (à partir de son ID). Bien sûr, si un tel bâtiment n'existe pas, le programme envoie une exception !
Sur cette page, tu peux vérifier que le joueur a assez de ressources en appelant sa méthode hasEnoughResourcesFor($building) (hélas, PHP ne permet pas le ? dans les noms de méthodes, dommage, ça rendrait le code source encore plus clair). Si la méthode renvoie true, alors tu appelle (sur ton objet User la méthode addBuildings($building), qui va s'occuper de créer l'entrée dans la table, de prélever l'argent, de donner de l'expérience, etc.
Enfin voilà, j'espère que ça te donnera envie de faire de la POO : on y gagne vraiment en clarté et en qualité ! Et puis, c'est devenu incontournable pour les applications un peu compliquées.
Sephi-Chan
Concernant les coûts de tes bâtiments, je t'invite à intégrer ça dans la base de données plutôt qu'en dur dans ton code.
Concernant le niveau de tes joueurs, etc. Il s'agit simplement d'avoir un champ qui contient ce niveau dans la table des joueurs. Ensuite, à toi de voir sous quelles conditions tu fais monter le niveau d'un joueur.
Pour les bâtiments, c'est un peu spécial. Généralement, on stocke dans une table à part les différents bâtiments et ensuite, on associe un joueur à un bâtiment grâce à une table qui stock l'ID du bâtiment, l'ID du joueur et les informations propres à cette instance du bâtiment, par exemple le niveau. Ainsi, il est simple de savoir que le joueur Robert (d'id 7) possède un bâtiment Caserne (d'id 32) de niveau 4 et un bâtiment Café (d'id 21) de niveau 2.
Au sujet des liens vers la création vers les bâtiments, GET semble être la bonne méthode. Tu aurais ainsi des liens de la forme /build.php?id=32.
Enfin, pour la partie temporelle, ça ne se fait pas côté Javascript comme tu peux le penser. Javascript doit rester une façade. Je te conseille de stocker la date du lancement de la construction dans la table qui associe un joueur à un bâtiment. Ensuite, avec un daemon, un cron ou un script appelé quand le joueur revient sur la page, tu vérifies si le temps actuel est supérieur à la date de lancement de la construction à laquelle tu additionnes la durée de construction du bâtiment et comme ça tu sais si on bâtiment est fini ou non.
Enfin, pour le framework, je te conseille d'attendre de maîtriser mieux PHP et l'orienté objet. Et oui, la POO est un atout majeur dans le développement d'application complexes comme le sont les jeux. Ça rend ton code plus clair et facile à maintenir.
Quelques exemples des atouts de la POO dans un jeu :
Quand ton utilisateur effectue une action qui lui rapport de l'expérience, tu peux appeler sur l'objet User (qui le représente) la méthode addExperience(quantity), qui augmente sa quantité d'expérience et lui fait éventuellement gagner un niveau (en appelant la méthode levelUp(), bien sûr).
De même, pour les bâtiments, on peut admettre qu'un objet User possède une méthode getBuildings() qui renvoie un tableau d'objets Building.
Ainsi, quand on va sur la page de création d'un bâtiment (après avoir cliqué sur le lien vu plus haut ), tu instancie un objet Building (à partir de son ID). Bien sûr, si un tel bâtiment n'existe pas, le programme envoie une exception !
Sur cette page, tu peux vérifier que le joueur a assez de ressources en appelant sa méthode hasEnoughResourcesFor($building) (hélas, PHP ne permet pas le ? dans les noms de méthodes, dommage, ça rendrait le code source encore plus clair). Si la méthode renvoie true, alors tu appelle (sur ton objet User la méthode addBuildings($building), qui va s'occuper de créer l'entrée dans la table, de prélever l'argent, de donner de l'expérience, etc.
Enfin voilà, j'espère que ça te donnera envie de faire de la POO : on y gagne vraiment en clarté et en qualité ! Et puis, c'est devenu incontournable pour les applications un peu compliquées.
Sephi-Chan