Bonjour à tous,
je me remet à la prog et je développe un petit jeu de fight entre joueur , ou chacun posséde différentes arme, armures...
J'ai pensais a une bdd du type
joueurs
id pseudo... armes botte
1 admin epée1 botte1
id-botte -- nom --- id-joueur -- caracteristique ----- defense ---prix
10 --- botte1 -- 1 -- botte mystique --- 12 -- 5
Ca le fait comme ca ? Merci :langue2:
Non, ce n'est pas bon. Tu ne dois pas avoir l'id du joueur dans la table des bottes puisque tu as l'id de la botte dans la table des joueurs.
Voilà une meilleure structure :
+----+--------+---------+----------+
| joueurs |
+----+--------+---------+----------+
| id | nom | arme_id | botte_id |
+----+--------+---------+----------+
| 1 | Corwin | 1 | 2 |
| 2 | Caine | 2 | 2 |
+----+--------+---------+----------+
+----+-------------+-----------+------+
| armes |
+----+-------------+-----------+------+
| id | nom | puissance | prix |
+----+-------------+-----------+------+
| 1 | Grayswandir | 100 | 1000 |
| 2 | Epée courte | 30 | 150 |
+----+-------------+-----------+------+
+----+----------------+------------+----------+------+
| bottes |
+----+----------------+------------+----------+------+
| id | nom | protection | regles | prix |
+----+----------------+------------+----------+------+
| 1 | Chaussons | 0 | | 10 |
| 2 | Bottes en cuir | 100 | mystique | 150 |
+----+----------------+------------+----------+------+
Salut,
Il faut essayer d'éviter les redondances. La défense et le prix peuvent-ils varier ? et si oui, les changements peuvent-ils être calculés simplement ? Cela dépend aussi de ton système d'équipement.
Il te faudrait minimum 3 tables
- joueurs
- equipements
- joueurs_equipements
Cordialement
Mighty
Edit : Trop rapide Sephi
@Sephi-chan: Ce ne serait pas encore mieux de ne faire qu'une seule table "objets" en regroupant armes et bottes ?
@ Mighty : le modèle a 3 tables me semble uniquement pertinent si l'on peut posséder plusieurs objets (et en équiper seulement un par emplacement) ou bien si l'on peut personnaliser les objets. Mais c'est effectivement l'approche la plus flexible.
@ Djidi : Clairement.
Il y aura un système d'inventaire, donc oui on pourra posséder plusieurs objet, mais être equipé que d'un seul. 3 tables sont privilégiés donc?
Merci
Dans ce cas tu as besoin d'une structure a 3 tables telles que :
+----+--------+---------+----------+
| joueurs |
+----+--------+---------+----------+
| id | nom | arme_id | botte_id |
+----+--------+---------+----------+
| 1 | Corwin | 1 | 2 |
| 2 | Caine | 2 | 2 |
+----+--------+---------+----------+
+----+-------+----------------+-----------+------------+----------+------+
| equipements |
+----+-------+----------------+-----------+------------+----------+------+
| id | type | nom | puissance | protection | regles | prix |
+----+-------+----------------+-----------+------------+----------+------+
| 1 | arme | Grayswandir | 100 | | | 1000 |
| 2 | arme | Epée courte | 30 | | | 150 |
| 3 | botte | Chaussons | | 0 | | 10 |
| 4 | botte | Bottes en cuir | | 100 | mystique | 150 |
+----+-------+----------------+-----------+------------+----------+------+
+-----+-----------+---------------+--------+
| equipements_joueurs |
+-----+-----------+---------------+--------+
| id | joueur_id | equipement_id | equipe |
+-----+-----------+---------------+--------+
| 1 | 1 | 4 | oui |
| 2 | 1 | 3 | non |
| 3 | 2 | 4 | oui |
+-----+-----------+---------------+--------+
Ici, on utilise la table
equipements
pour stocker tous les équipements. La colonne
type
permet de les distinguer.
Cette table contient les colonnes utiles à tous les équipements, même si certaines colonnes ne sont pas utiles à certains équipement. Ici, la colonne
puissance
ne sert à rien pour une botte, donc on la laisse vide (valeur
NULL
).
La dernière table sert à indiquer les objets possédés par chaque joueur, et la colonne
equipe
permet de savoir si un objet est équipé ou non. Ici, le joueur 1 dispose
des objets 4 (qui est équipé) et 3 (qui n'est pas équipé). Le joueur 2 dispose seulement de l'objet 4 (qui est équipé).
L'écriture des requêtes SQL est un peu plus délicate avec cette approche, mais c'est a priori ce que tu peux avoir de mieux.
Niquel c'est exactement ce que je recherchais, si on possedes bcp d'objets, ca serait plus claire d'avoir une tables pour chaques types d'equipements , ou c'est plus lourd ?
Avoir une table pour chaque type d'équipement n'apporterait rien et alourdirait le volume de code et le temps d'exécution (puisqu'on ne pourrait plus récupérer l'ensemble de l'équipement d'un personnage d'une seule requête).
Ok tu m'as convaincu ^^
Merci !