Votre question

PHP/MySQL et programmation de jeu ! Help !

Tags :
  • MySQL
Dernière réponse : dans Programmation
1 Novembre 2013 22:10:28

Bonsoir ! Je suis entrain de créer un site de jeu en ligne et j'aimerais vous poser quelques questions car je suis un peu bloqué.

Grâce a une fonction PHP qui demande des données à MySQL on peut facilement créer un inventaire à l'aide d'une table contenant les ID, objets, leur nombre etc ... Mais comment l'info envoyé à MySQL permet à MySQL d'envoyer l'objet dans l'inventaire du joueur ? Par exemple : PHP dit à MySQL que Bob à reçu une épée mais comment faire apparaitre une épée dans l'inventaire de Bob sur le jeu ?
L'épée va être ajouter dans une table via une fonction mais comment cette épée va-t-elle être affichée dans l'inventaire du joueur ?


J'ai une autre petite question pour vous, chers confrères ! :D 

J'aimerais savoir si vous saviez comment faire d'un point de vue codage, pour faire glisser un objet de l'inventaire jusqu'au stuff mais en plus que seulement les chapeaux puissent se glisser sur l'emplacement(la case) des chapeaux(sinon l'objet sélectionné retourne à sa place)? Bottes pareil, etc...


stuff inventaire

OO OOOO
OO OOOO
OO OOOO

O= 1 emplacement

Ou alors ! Connaissez-vous un moyen plus simple pour faire passer un objet présent dans l'inventaire jusqu'au stuff (et en rajoutant la même difficulté qu'au dessus: que chapeau soit positionnable uniquement sur emplacement chapeau etc...) ?


Je débute vraiment en programmation donc si vous pouviez expliquer lentement ça serait vraiment génial ! :p 

Merci beaucoup à tous ceux qui voudront bien m'aider, bonne soirée à vous ;D

Autres pages sur : php mysql programmation jeu help

2 Novembre 2013 11:19:59

Salut,

Une solution possible :

La table joueur contient un champ "epee" de type int qui sera une clé étrangère vers l'épée qu'il possède .
donc pour lui attribuer il faudra faire faire une requete de mise à jour :
update joueur
set epee=id_de_l_epee
where joueur = joueur_selectionné;

Citation :
L'épée va être ajouter dans une table via une fonction mais comment cette épée va-t-elle être affichée dans l'inventaire du joueur ?


Avec une requete de type SELECT qui sera récupérée dans un tableau en php ( http://fr2.php.net/pdo.query ) .
Ensuite ça restera de l'affichage en php/html


Citation :
'aimerais savoir si vous saviez comment faire d'un point de vue codage, pour faire glisser un objet de l'inventaire jusqu'au stuff mais en plus que seulement les chapeaux puissent se glisser sur l'emplacement(la case) des chapeaux(sinon l'objet sélectionné retourne à sa place)? Bottes pareil, etc...

Ici ça dépend du langage, ça s'apelle du drag and drop, et vu que tu parles de php je suppose que ton application est un site .
Dans ce cas du dois utiliser du javascript http://chez-syl.fr/2012/03/drag-and-drop-html5-jquery/ .
2 Novembre 2013 17:57:45

Ok merci pour ta réponse ;) . Finalement on va partir sur un menu déroulant pour chaque type d'objet. Menu déroulant qui ne comportera que les objets que possèdera le joueur. De ce fait, j'imagine que je peux appliquer la 1 ère partie de ta réponse
Contenus similaires
2 Novembre 2013 17:59:56

pour le transfert de l'info de la base de donnée au joueur mais comment préciser que c'est dans le menu déroulant que je veux l'envoyer ? J'aimerais aussi savoir comment associer l'image de l'objet à ses ID et j'aimerais savoir comment faire afficher
2 Novembre 2013 18:08:53

l'objet sélectionné par le joueur dans le menu déroulant et comment la déplacer ? Car j'aimerais que l'image du chapeau apparaisse dans la case(emplacement) chapeau, armes idem, etc...Savez-vous comment faire ?
2 Novembre 2013 18:09:11

Merci à vous par avance !
2 Novembre 2013 21:27:30

Citation :
comment préciser que c'est dans le menu déroulant que je veux l'envoyer ?


En fait tu ne vas pas l'envoyer directement dans le menu déroulant directement . C'est le php qui va recevoir les données grâce à la requete de type "select" qui va générer le HTML (donc le formulaire) .

L'idéal serait de créer une page de ce type où t peux glisser et déposer les objets de l'inventaire tu l'équipement du joueur :




Citation :
J'aimerais aussi savoir comment associer l'image de l'objet à ses ID et j'aimerais savoir comment faire afficher l'objet sélectionné par le joueur dans le menu déroulant et comment la déplacer ? Car j'aimerais que l'image du chapeau apparaisse dans la case(emplacement) chapeau, armes idem, etc...Savez-vous comment faire ?


Pour ça, une solution (parmis d'autres) est d'ajouter un champ dans la table de tes armes qui contient un lien vers cette image .
Niveau mise en page en utilisant des menu déroulant je ferai comme ça :



Dans ce cas, chaque objet aura un id qui pointera vers une caterogie, par exemple l'épée aura un id qui correspondra à la catégorie arme, pour pouvoir filtrer uniquement les armes dans la liste déroulantes des armes .

Le joueur selection l'objet qu'il veut équiper, et en appuyant sur le bouton "équiper", la base de donnée recevra l'équipement actuel du joueur .
8 Novembre 2013 13:34:57

Salut, merci à toi ;) .Concernant l'organisation de la base de donnée, j'avais pensé à procéder comme cela:
-Table joueur
-Table personnage
-Table objet_type:chapeau, épée, etc..
-Table objet_description: liste des objets avec leurs bonus
8 Novembre 2013 13:37:41

-Table objet_type / objet_description: 2 champs: id objet_description et id objet_type
-Table joueur/personnage: 2 champs: id joueurs et id personnage
-Table joueur/objet_description: 2 champs: id joueur et id objet_description
8 Novembre 2013 13:40:27

Qu'en pensez-vous ? Concernant la table objet_description/objet_type, je n'aurais qu'à associer à la main chaque id d'objet_description à son id objet_type mais comment faire pour la Table joueur/personnage pour que chaque
8 Novembre 2013 13:41:03

id personnage s'associe à son id joueur ?

Merci à vous.
8 Novembre 2013 21:20:55

Citation :
comment faire pour la Table joueur/personnage pour que chaque
id personnage s'associe à son id joueur ?


Une solution :

Solution 1 : La table joueur contient N champs id_perso1, id_perso2, id_perso4 ... id_persoN qui correspondent à l'id de la clase personnage

Solution 2 : dans la table personage tu peux mettre un id_joueur .

ça dépend si tu veux limiter le nombre de personnage par joueur (solution 1) ou si tu veux avoir la possibilité d'en avoir autant que tu veux (solution 2 ) .
Sachant que dans la solution 2, même si au niveau base de données tu peux avoir autant de persos que tu veux, tu pourra quand même limiter ce nombre au niveau de l'application .



La réponse était même dans la question, "comment faire ... pour [...] id personnage id personnage s'associe à son id joueur "
-> Associer un id_joueur au personnage .
8 Novembre 2013 23:25:45

Merci à toi ;) .
8 Novembre 2013 23:26:20

Il me reste à trouver comment limiter le nombre de création de personnage par joueur.
9 Novembre 2013 16:22:08

Soit avec la solution 1, et là t'as ce que tu auras gérer niveau application c'est l'écrasement des anciens personnages .
Sinon au moment de la tentative de creation tu fais un count pour savoir combien le joueur a de persos.
11 Novembre 2013 00:13:34

Je te remercie ;) .


J'ai un problème, quand je crée mon formulaire d'inscription, quand je fais un test en rentrant des valeurs(pseudo, mot de passe...) ça m'affiche

"Erreur SQL !INSERT INTO membres VALUES( "", "err", "d95679752134a2d9eb61dbd7b91c4bcc etc...)

Column count doesn't match value count at row 1" ?

Je n'arrive pas à trouver l'erreur ! je bloque dessus depuis maintenant 4h o_o ! Si quelqu'un veut bien m'aider, ça serait cool :p .

Voici le codage: http://pastebin.com/RuJAeNkB

J'ai déjà essayé de mettre mysql_real_escape_string à la place de mysql_escape_string et des tas de trucs mais ça n'a pas marché...

Je ne comprends pas... J'indique 7 valeurs et j'ai 8 colonnes dont l'id qui est en auto-incrémentation, donc pas besoin de le rentrer.

Merci par avance, bonne soirée.
11 Novembre 2013 09:37:19

Salut, pour mieux comprendre il faudrait aussi avoir un dump de la base de données pour comparer les types, mais ""au hasard"" je dirai que l'erreur vient du fait que tu mets des guillemets autour du premier champ, alors que ce n'est pas un chaine de caractere mais un entier (id) .

  1. INSERT INTO membres VALUES


Sinon dans les insertions, si tu ne précises rien entre () après "membre", il faut insérer tous les champs dans l'ordre qu'ils sont dans ta table .
Dans ton cas, soit tu ajoutes l'insertion de l'id avec rien dedans, soit tu mets :
INSERT INTO membres(login, mdp, etc...) VALUES etc...

( http://sql.sh/cours/insert-into )

Sinon, mysql_trucbidul est devenu obsolète, la nouvelle mode c'est PDO . http://fr.openclassrooms.com/informatique/cours/pdo-int...
11 Novembre 2013 12:22:44

Salut, merci à toi.

J'ai réessayer en enlevant 'id' pour avoir 7 valeurs d'un côté et 7 valeurs de l'autre mais ça me fait toujours pareil...! Ca se trouve c'est un problème de " ou ' ou de . !...

Erreur SQL !INSERT INTO membres (`pseudo`,`mot_de_passe`,`email`,`nom_perso`,`classe`,`type`,`réponse_secrète`) VALUES ("rttgg", "83878c91171338902e0fe0fb97a8c47a\", \"eldel@hotmail.fr\", \"efzfff\", \"blabla\", \"mâle\", \"gghhjj")
Column count doesn't match value count at row 1


Ca ne viendrait pas du count(*) par hasard ? ou alors ça vient de l'id et il faut mettre quelque chose de particulier et ne pas rien mettre...Ou alors ça peut venir des types que j'ai mis pour les champs.

Champs/types dans ma BDD:

id/int11 ==>auto_increment
pseudo/varchar 20
mot_de_passe/varchar32
email/varchar45
nom_perso/varchar25
classe/varchar20
type/varchar20
réponse_secrète/varchar20


Les valeurs à insérer dans la base ne dépasse pourtant pas les valeurs limites...Je ne comprends pas d'où vient l'erreur...

Mais ça se trouve, mon codage à côté comporte des erreurs et ça implique la ligne INSERT INTO dans l'erreur. Mmmhh !...
11 Novembre 2013 13:10:51

à la place de rien tu mets "NULL"
12 Novembre 2013 22:19:08

Bonsoir, merci à toi mais j'ai finalement décidé de changer de structure^^.

Il y a une page:
login.php pour taper les données(pseudo, mdp...)==>une page loginok.php pour les vérifier
inscription.php pour taper les données(pseudo, mdp...)==>une page inscriptionok.php pour les vérifier
Et lorsque le membre sera connecté il sera basculé vers index.php.
Une page déconnexion.php à placer en haut de chaque page des membres connectés.


Pour la vérification des données liées à l'inscription: inscriptionok.php
http://pastebin.com/x8dsJjnv

ce code marche, le mot de passe est bien insérer dans la base de donnée mais j'aimerais l'insérer haché, je n'arrive pas à le faire malgré plusieurs tentatives...Pourriez-vous m'aider, svp ?^^



Pour la vérification de données liées à la connexion: loginok.php:

http://pastebin.com/6NfpNnUY


Sauf que quand j'appuie sur valider, rien ne se passe, alors que j'entre un pseudo et un mot de passe qui sont dans la base de donnée. Et quand j'appuie sur valider en laissant les champs vides, ça charge et ça me ramène sur loginok.php au lieu de m'envoyer sur index.php. Avec "index.php", comme elle est codée ici, je pourrais m'en servir comme page de menu des membres connectés, est-ce bien ça ?

Je devrais bien placer ce code ci: http://pastebin.com/sQVtRLvG en haut de chaque page réservées aux membres connecté ? C'est bien ça ?

Avec "index.php", comme elle est codée ici http://pastebin.com/mKBCm0yC, je pourrais m'en servir comme page de menu des membres connectés, est-ce bien ça ?



Lorsque le membre sera connecté il sera basculé vers index.php. ==>est-ce bien ce qui est codé ?

Merci, bonne soirée.
13 Novembre 2013 12:33:45

Au lieux de faire des pages "truc", "trucok", tu peux le faire en une page :

tu vérifie si les données $_POST['le login'] et $_POST['le mot de passe'] existent , si c'est le cas tu modifie la variable de session, sinon tu affiches le formulaire .

Pour le mettre hashé en md5 par exemple : tu mets tout simplement: 'mot_de_passe'=>md5($_POST['mot_de_passe']) dans le tableau passé en en parametre pour executer la requete .

Dans ton code, tu crée la variable $motdepassehache, mais tu ne l'utilises pas dans le tableau ...
17 Novembre 2013 20:27:26

Merci, j'ai réussi :p , il ne me reste plus qu'à bloquer les pages interdits aux non connectés, etc...

Là je suis entrain de m'attaquer aux jointures entre différentes tables mais j'ai quelques soucis.

J'ai une table membres avec les champs suivants:

id
nom_perso
pseudo
mot_de_passe
email
race
type(mâle,femelle)
réponse_secrète
date_inscription


et une table personnages avec les champs suivants:

id
nom_perso
membres_id
race
type(mâle,femelle)
date_inscription
etc...

En s'inscrivant, le joueur rentrera le nom de son perso, son pseudo, la race, le type(mâle,femelle) etc... Les champs communs aux 2 tables sont:

nom_perso
membres_id
race
type(mâle,femelle)

J'aimerais que ces informations soit balancées dans la table personnage lors de l'inscription et que ce personnage créé soit associée à l'id du compte dans la table membre

J'ai essayé cette jointure

SELECT membres.id, personnages.membres_id
FROM membres
LEFT JOIN personnages
ON membres.id=personnages.membres_id

ORDER BY membres.id, personnages.membres_id;


Est-ce que c'est la bonne méthode ?


J'ai choisi de séparer personnages et joueurs pour qu'un joueur puisse créer plusieurs personnages mais j'ai quelques problèmes au niveau des jointures...

J'obtiens une colonne id et une colonne membres id, mais dès que je rajoute un ON etc... Ca me marque "erreur de syntaxe".

Au fait, j'ouvre une fenêtre de requête pour taper la requête pour faire des jointures mais je ne comprends pas pourquoi le champ id et membres_id s'enlève et la table réapparait comme elle était au départ à chaque réactualisation de la page...Quelqu'un pourrait m'expliquer, s'il vous plaît ?

Je pensais qu'une jointure se conservait tout le temps...J'ai l'impression que c'est temporaire ! Help ^^


Merci à vous et bonne soirée ;) .
17 Novembre 2013 21:00:12

ça sonne un peu années 39-
Citation :
45 de mettre "race" dans les informations du membre ...


Les champs communs aux 2 tables sont:

nom_perso
membres_id
race
type(mâle,femelle)


Tu fais de la redondance d'informations là, et c'est louche ... Le nom du perso ne devrait pas apparaitre dans la table membre, mais uniquement dans la table perso. Avec UNE clé étrangère vers perso (du genre id_perso) .


Citation :
Au fait, j'ouvre une fenêtre de requête pour taper la requête pour faire des jointures mais je ne comprends pas pourquoi le champ id et membres_id s'enlève et la table réapparait comme elle était au départ à chaque réactualisation de la page...Quelqu'un pourrait m'expliquer, s'il vous plaît ?


Les requetes de type SELECT ne modifient pas la structure des tables . Les jointures servent à croiser les informations de différentes tables le temps d'une requête.

Revois tes bases . . .



Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS