Ramasser un objet - 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 : Ramasser un objet (/showthread.php?tid=5191) |
Ramasser un objet - sawk - 23-01-2011 Bonsoir, Après quelques temps au service de php et à la création de divers sites... J'ai eu la soudaine envie de créer un petit jeu par navigateur. Ce projet n'est restreints qu'à ma famille pour le moment. Bref, le système est assez simplet : On choisis entre un dragon, un dinosaure, un troll ou un centaure. Ensuite on à plusieurs action disponible (du type acheter, fouiller, se promener, combattre...). Ces actions ne sont faisable qu'a certains lieu. Actuellement je code la partie qui permet de fouiller. Comme je l'ai dit le code est très très simpliste. Mais j'ai un petit soucis. En fait, je cherche à ajouter 1 objet quand on fouille par terre mais l'update ne fonctionne pas... J'ai essayer en ne mettant pas +1 mais genre 35, et là, il UPDATE bien... voici le code de la page :
voici les tables utiliser sur le système d'inventaire et d'objet :
Si ce système n'est pas très bien, vous pouvez m'orienté sur une meilleur façon ? RE: Ramasser un objet - niahoo - 23-01-2011 hello, ça vient peut-être pas de là mais fais gaffe à tes variables. $nombre contient un entier, tu l'initialises avec $nombre="" au lieu de $nombre=0 mt_rand($min, $max) renvoie un entier, donc ton case "0" n'est pas correct En php, hormis quelques surprises, ça fonctionne quand même généralement, mais relis bien ton code et tu trouveras peut-être ton bug RE: Ramasser un objet - sawk - 23-01-2011 Je suis complètement paumé... Je penser pas que j'allais ramer autant ! Le système fonctionne maintenant (merci niahoo)... Mais le truc c'est que c'est mal organiser... Je sais pas trop comment faire, si vous pouviez m'eclairé sur un système inventaire+objet se serait cool. C'est surtout au niveau des requête. Car côté code, je répète, ça marche. RE: Ramasser un objet - Colmea - 24-01-2011 Je pense que tu es dans le bon pour ton système d'inventaire (je parle de la structure de la DB). Maintenant il faudrait créer des relations entre le champ objet_id et le champ id de ta table objet . Tu pourrais aussi rajouter un champ dans la table objet qui donnerait un pourcentage de chance de ramasser l'objet. Ainsi, au lieu de faire un "bête" rand sur deux nombres identiques à chaque fois, tu remplaces le $max par la valeur de ton champ. Plus cette valeur est haute, plus l'objet est difficile à ramasser, et inversement. Rajouter aussi plusieurs champs dans la table objet serait un plus. Notamment remplacer le champ 'objet' par 'nom' serait plus explicite. Ajouter un champ description, image, effet, etc ... RE: Ramasser un objet - niahoo - 24-01-2011 La première chose à faire je pense ce serait de créer plein de fonctions qui contiennent chaque requête, une qui te renvoie l'inventaire à partir d'un id de joueur, une qui ajoute un objet à un joueur, une qui renvoie le nombre d'objets possédés par un joueur en fonction d'un id joueur et d'un id item, une qui vérifie qu'un joueur à bien un objet, etc.. C'est tout bête, mais ensuite, dans ton code, au lieu d'avoir toutes les requêtes qui se baladent, tu auras de simple appels à des fonction, donc un code plus clair et plus facile à structurer. Un autre truc, la deuxième personne du singulier prends un s à la fin, donc "tu fouilles par terre ..." RE: Ramasser un objet - sawk - 24-01-2011 Oui les erreurs d'otrho... ^^" Pour clarifier tout ça, les fonctions je n'en fais presque jamais... Alors bon, autant dire que faut que je me penche dessus pour faire tout ça. Ensuite, le problème est presque résolu (pressque ?) oui car le soucis c'est que je fait un INSERT ou UN DUPLICATE KEY UPDATE selon si l'objet existe déjà dans le sac... Le problème c'est que j'ai l'erreur suivante : Array ( [0] => 00000 [1] => [2] => ) 1 (je ne sais pas ce qu'elle représente pour PDO) RE: Ramasser un objet - christouphe - 24-01-2011 Pour ton objet dupliqué, il faut que tu te poses la question: "Un joueur a-t-il le droit de posséder plusieurs objet de même type ?" Si oui => insert avec un autre ID (auto), sinon une fonction parcourant l'inventaire à la recherche de l'objet "clone" (PHP) AVANT de taper dans la base. Solution numéro 3: faire un index UNIQUE(id_membre,id_objet)...mais c'est à voir et pas des plus simple ensuite pour la maintenance. RE: Ramasser un objet - sawk - 24-01-2011 Wow je me rend compte que c'est pas si simple de faire un jeu >< Je suis pas décourager juste bouche bée... Plus logique que faire un espace membre ou encore un forum... Existe-il une documentation ou des tutoriaux sur les fonctions de bases (inventaire, combats... etc) parce que je sens que je suis pas sortis de l'auberge ! RE: Ramasser un objet - christouphe - 24-01-2011 j'aurais tendance à dire "NON, juste une feuille et un crayon, un peu de réflexion et BEAUCOUP de café" Mais bon là c'est l'inventaire, moi ce que j'ai fait, c'est un modèle de la réalité dans un premier temps: Un sac, des objets, un propriétaire du sac / des objets comme toi. Ensuite, je me suis posé la question, un seul exemplaire ou plusieurs ?? etc...Comme dans la vrai vie RE: Ramasser un objet - sawk - 24-01-2011 Bon en me basant sur un index UNIQUE J'ai ma table qui ressemble à ça : Il faudrait donc que j'ai un truc qui ressemble à ça (en me basant sur le fait que je doit mettre ç chaque fois l'id du membre pour tel id_objet C'est bien ça ? |