JeuWeb - Crée ton jeu par navigateur
Système de magasin - 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 : Système de magasin (/showthread.php?tid=1714)

Pages : 1 2


Système de magasin - Kassak - 08-09-2007

Bonjour bonjour..


Alors cela fait un moment que j'ai essayé de me pencher sur le systeme de magasin de mon jeu.
J'avais refilé le boulot a un membre de mon équipe, mais quand on bout de trois mois on ecrit que 2 lignes de code ca m'enerve^^Donc j'ai reprit cette partie.


Bref, j'aimerais avoir des idées sur comment faire mon systeme de magasin.

On prend l'exemple de deux magasins differents et de deux pnj differents. Chaque objet dans ma table item a un id a lui (id 1 = potion, id 2 = armure, id 8 = bottes etc...).


Je souhaiterais creer une table magasin, avec un champ pnj ( nom du pnj ou son id ) et un champ item.

Mais comment faire pour que dans le champ item il y est les id 1 2 3 et 4?


Bref tout ca n'est pas tres clair pour moi, et je ne sas pas si vous auriez des idées pour moi? si vous voulez plus d'info allez y Wink

Voili voilou


RE: Systeme de magasin - uriak - 08-09-2007

il te faut une table de liaison (relation n n)

donc tu as la table objets (objects)

ID, nom, autres caracs utiles (genre type etc)

la table magasins

ID, nom, proprio, emplacement, etc

et la table bien en vente : (goods)

ID_objet, ID_magasin, (quantité si tu veux les traiter en groupe)

donc quand tu consultes un magasin, tu cherches dans ta table d'objects en vente, avec une jointure sur la table des objets

SELECT objects.name, objects.type, goods.quantity FROM goods INNER JOIN objects ON (goods.ID_object = objects.ID) WHERE goods.ID_shop = '$shop'


RE: Systeme de magasin - Sephi-Chan - 08-09-2007

Je te propose d'utiliser trois tables : Pnj, Objets, Pnj_objet.

Dans la table Pnj, tu stockes tes Pnj, qu'ils soient vendeurs, donneurs de quêtes, ou que sais-je d'autre.
Dans la table Objets, tu places tous les objets de ton jeu.
Dans la table Pnj_objet, tu crées les liens entre les pnj et les objets qu'ils proposent. Tu peux également définir le coût auquel le Pnj vend ledit objet.

Exemple d'entrée de table Pnj_objet :
PO_id_pnj, PO_id_objet, PO_prix
4, 27, 1000
4, 38, 20
8, 13, 81
62, 13, 90

Cela signifie (que tu vives ta vie, sans aucun souci, philosophie, akuna matata !) que le Pnj d'id 4 vend l'objet d'id 27 à 1000€ (selon ton unité monétaire), mais qu'il vend aussi l'objet d'id 38 à 20€. Le Pnj d'id 8 vend l'objet d'id 13 pour 81€ (seulement !) alors que l'un de ses confrère vendeur propose ce même objet (d'id 13) à 90€.

Cela te permet même de faire des stock limités, en ajoutant un champ indiquant la quantité actuelle et un champ quantité maximale, voir même un champ qui précise le temps de réapprovisionnement dudit objet.

Voila ce que je ferais (et que je fais déjà actuellement en fait).


Sephi-Chan


RE: Systeme de magasin - Kassak - 08-09-2007

Et bien oui c'est e que je vais faire^^

J'y avais pensé, mais vu que generalement ce que je fais c'est pas super je prefereais demander avant^^


Ma table PNJ est deja presente, et ma table ITEM aussi, il ne me resté qu(a savoir comment organiser la table qui fera la liaison des deux.

Bien merci je vais faire ca sur le champ Wink


RE: Systeme de magasin - Artiou - 08-09-2007

je vois pas trop ce que tu veux dire, mais je pense voir même si ça me paraît relativement simple :S

Ben déjà pour lorsque l'utilisateur est dans le magasin, tu mets avec un formlaire:

potion (champ de nombre de potions) <input type="text" name="potion" /> un bouton acheter
item2 (champ de nombre d'tiems 2) un bouton acheter
etc

si le gars à acheté telle potion enfin à rempli le formulaire, déjà tu verifies si il a assez de pos ou d'argent. après s'il en a assez, tu lui enlèves tant de po;

maintenant, dans la base mysql:
tu mets:

(les champs d'abord ^^)
type (INT 5, 5pour toutes les possibilitées ^^) |possesseurs
1(potion) | (pseudo1,10);(pseudo2,10)
(après tu utilisera les regex que je ne connais pas très bien pour l'instant :S pour déterminer par rapport aux joueurs le nombre et type d'objets qu'ils ont ^^
maintenant, en php: si le nom de la variable est potion alors tu fais la requête mysql: $reponse=mysql_query('SELECT possesseurs FROM tabledesobjets WHERE type="1" ')
puis tu utilises les regex pour trouver le pseudo, si il existe sinon tu l'insères en le rajoutant. Si il existe, tu utilises un UPDATE comme requête sql..


J'éspère t'avoir éclairé un peu ^^

Artiou Wink

edit: en fait faut donner un id à chaque pseudo, ça bouffe moins de place et à la place de mettre(pseudo,nobmre) tu mets (idpseudo,nombre)


RE: Systeme de magasin - Sephi-Chan - 08-09-2007

Artiou, cette méthode est surtout à éviter. Profite des capacités des bases de données relationnelles. Ça évite de consommer inutilement les ressources de PHP en REGEX et en explode().


Sephi-Chan


RE: Systeme de magasin - Kassak - 08-09-2007

Edit :Merci a toi J-12, quel nul je suis des fois..Passer des heures a chercher une connerie comme ca c'est ma spécialité^^


RE: Systeme de magasin - jo_link_noir - 08-09-2007

salut, je crois que ça vient du form, tu oubli de le fermer dans la boucle


RE: Systeme de magasin - Artiou - 08-09-2007

Sephi-Chan a écrit :Artiou, cette méthode est surtout à éviter. Profite des capacités des bases de données relationnelles. Ça évite de consommer inutilement les ressources de PHP en REGEX et en explode().


Sephi-Chan

oki merci ^^ je le saurai pour la prochaine fois Big Grin


RE: Systeme de magasin - Sephi-Chan - 08-09-2007

Mais je vous en prie monsieur, on est là pour ça sur le forum. Wink