JeuWeb - Crée ton jeu par navigateur
affichage objets equipés - 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 : affichage objets equipés (/showthread.php?tid=341)



affichage objets equipés - nemesis_elite - 19-10-2006

Bonjour a tous

j'aimerai afficher les objets equipé par le joueur, comme sur l'image ci dessous :
[Image: 77649ee2.png]

Jai 2 tables :

Equipement:

id_joueur | id_tete | id_main_gauche | id_main_droite | id_ventre | id_pied

Objets:

id | nom | description | img

Mais je n'arrive pas à formuler la ou les requêtes nécesaires.Faut-il faire 1 requête pour chaques objets ou bien 1 seule suffit.
Je ne m'en sort plus là !!

Pourriez-vous m'aider ?

Merci d'avance


RE: affichage objets equipés - LittleQI - 19-10-2006

nemesis_elite a écrit :Bonjour a tous

j'aimerai afficher les objets equipé par le joueur, comme sur l'image ci dessous :
[Image: 77649ee2.png]

Jai 2 tables :

Equipement:

id_joueur | id_tete | id_main_gauche | id_main_droite | id_ventre | id_pied

Objets:

id | nom | description | img

Mais je n'arrive pas à formuler la ou les requêtes nécesaires.Faut-il faire 1 requête pour chaques objets ou bien 1 seule suffit.
Je ne m'en sort plus là !!

Pourriez-vous m'aider ?

Merci d'avance

Une requete dans ce genre la devrait aller:
Code PHP :
<?php 
SELECT O1
.nom as tete, O2.nom as maindroite, O3.nom as maingauche, O4.nom as ventre, O5.nom as pied
FROM Equipement
as E, Objets as O1, Objets as O2, Objets as O3, Objets as O4, Objets as O5
WHERE E
.id_tete=O1.id
AND E.id_main_gauche=O2.id
AND E.id_main_droite=O3.id
AND E.id_ventre=O4.id
AND E.id_pied=O5.id
AND E.id_joueur=1;



RE: affichage objets equipés - gtsoul - 20-10-2006

j'utilisais ceci dans mon ancien système,
mais préfère quand même une table de type :
id_perso | id_equipement | emplacement
ex : 1 | épée kitutou | maingauche

ca te permet de gagner de la place mais aussi simplifie le calcul des bonus
tu as une table bonus :
id_objet | bonus1 | bonus2
=> SELECT SUM(bonus1), SUM(bonus2) FROM bonus, inventaire WHERE id_objet = id_equipement AND id_perso = ...
pas facile avec le premier système

Mais aussi l'édification de règles spéciales (ex : objet à 2 mains)


RE: affichage objets equipés - naholyr - 20-10-2006

L'avantage de la méthode de gtsoul est qu'elle permet l'insertion de nouveaux emplacements sans modifier les tables : si tu dois ajouter les anneaux tu devrais ajouter une colonne dans ton exemple, alors qu'avec cette mise en place il te suffira de spécifier "annulaire gauche" dans 'emplacement', sans avoir à modifier tes tables.


RE: affichage objets equipés - pilo_briko - 21-10-2006

Moi et bien au moment et tu rentre l'objet dans la ligne tu perso au lieu de mettre le nom de l'objet tu met son adresse. ex: imagestete/casque1
Et au moment ou tu affiche tu n'a plus que écrire la variable de la tête et c'est finit!


RE: affichage objets equipés - naholyr - 21-10-2006

Tatata, mauvaise modélisation ça. Un nom c'est un nom, une image c'est une image. On ne met pas le chemin d'une image pour le nom de l'objet, c'est une grosse erreur qui conduit à des grandes difficultés de maintenance du code à l'avenir.


RE: affichage objets equipés - gtsoul - 21-10-2006

Le chemin de l'image est soit stocké dans une colonne de la table objet soit calculé (ex : images/objet/$id_objet.jpg). Si tu as respecté les 3 règles d'optimisation de ta bdd (notamment celle de l'invariabilité de tes identifiants), ca marche.