JeuWeb - Crée ton jeu par navigateur
[Résolu] Stockage données MYSQL (Pouvoirs) - 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] Stockage données MYSQL (Pouvoirs) (/showthread.php?tid=3989)



[Résolu] Stockage données MYSQL (Pouvoirs) - hit - 20-05-2009

Bonjour,
Tout d'abord je ne suis pas passé par le sujet de présentation et m'en excuse je le fait rarement sur les forums, mais bon mon pseudo et hit et j'aime bien coder des algorithme bien tordu.

Mais dernièrement je suis tombé sur un problème de taille, en effet je suis sur un jeu ou les joueurs disposent d'environs 20 à 30 pouvoirs différents disposant chacun de 100 niveaux (définis grâce aux suites ^^).

Or pour pouvoir les utiliser j'ai pensé tout d'abord passer par une array dont le premier pouvoir serait le premier index et la valeur le niveau. Et là question : Comment réussir à stocker et récupérer cette jolie idée ? Tout cela sachant que le nombre de pouvoir devrait être grandissant (je compte en rajouter)

Une colonne différente dans la bdd pour chaque pouvoir m'a semblé être la meilleure idée, avec une récupération des valeurs et stockages dans l'array. Pour l'instant je fait ça mais je vous demande si vous n'auriez pas une meilleure idée ^^
Merci d'avance, je vais de ce pas voir si je peux aider moi aussi Smile

(Et aussi vu que je commence à m'y intéresser y'a t-il un intérêt à utiliser la POO dans ce cas ? Un joueur à des caras/pouvoirs utilisés lors d'un combat)


RE: Stockage données MYSQL (Pouvoirs) - Argorate - 21-05-2009

C'est de la conception, si tu as besoins d'y voir clair et que tu arrive pas a modéliser direct dans ta tete, fait le MCD sur papier, ainsi que le MR (Model Relationnel).

Dans ton cas, je dirais qu'il sagit en gros de faire une table:
pouvoir (id, ....infos...)
pouvoir_perso(id_pouvoir, id_joueur, niveau, ...autre)
joueur (id, ...)

non? Smile

Ensuite pour les récupérés, il faut voir l'utilité de la chose, tout récupéré ne sert probablement a rien...
Il faut voir l'utilisation que tu en fais...


RE: Stockage données MYSQL (Pouvoirs) - hit - 21-05-2009

Benh j'ai une table du type (Id, Pouvoir1, Pouvoir2, etc.) avec chaque pouvoir qui contient une valeur entre -1 et 100 (-1 = Peut pas être acquise, 0=Peut être acquise, 1=Acquise de level 1, 2=Level 2 etc. et j'ai en fait besoin de tous les récupérer :/ il y a un tirage aléatoire de sorts...
Je continu de chercher et te remercie de ton aide (C'est quoi le MCD ?)


RE: Stockage données MYSQL (Pouvoirs) - Roworll - 21-05-2009

MCD -> Modèle conceptuel des données.


RE: Stockage données MYSQL (Pouvoirs) - Argorate - 21-05-2009

Ta base de données telle que tu me la décris, ne semble pas très bonne.

Si j'ai compris tu as (id (du joueur?), pouvoir1, pouvoir 2, ..., pouvoir n-1, pouvoir n)?
Dans se cas si tu veux ajouter ou retirer un pouvoir, tu auras des problèmes, et si tu as beaucoup de pouvoir ça va être long a créer et gérer.

Bref, il est préférable de le faire en trois tables comme je te l'ai expliqué:

1 pour les joueurs (avec leurs détails)
1 pour les pouvoirs (avec leurs détails)
1 qui relie les deux (chaque tuple/enregistrement/ligne de la table représentera UN pouvoir pour UN joueur donné : d'où si le joueur à n pouvoir, il y aura n lignes avec l'ID du joueur et les différent id des pouvoirs qu'il possède.)

Laisse tomber le MCD. Tu perdrais plus de temps en l'apprenant qu'autre chose en l'occurrence.


RE: Stockage données MYSQL (Pouvoirs) - hit - 21-05-2009

Je m'intéresse seulement à la table pouvoir (Il y a une table joueur sous-entendue avec le id)
Donc en me basant sur ce que tu as dit qui est assez vrai (Le moindre changement de pouvoir peut devenir ingérable)
Finalement j'ai une table avec ton système :
(Id(Joueur), Pouvoir, Niveau Pouvoir)
Cela me permet de récupérer normalement tout les pouvoirs d'un joueur et de les placer dans un array du type (Pouvoir => Niveau Pouvoir)
En plus cela m'évite l'utilisation de "array_filter($Pouvoirs[$P1], "TrierPouvoirs");" donc tout est pour le mieux Wink Merci


RE: Stockage données MYSQL (Pouvoirs) - Argorate - 22-05-2009

Pas de problème Wink

Je te conseil d'appliquer ce shéma pour tous les cas se rapprochant de celui-ci:

Exemple pour les objets, ne vas pas faire (id, objet1, 2, 3...n)
Car d'une part les joueurs ne pourait pas avoir plus de n objet, et en plus si ils ont moins de n objet, tu stock du vide...

Bref je crois que tu as compris Wink