IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Créer un jeu en ligne tour par tour


Sujet :

PHP & Base de données

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Août 2020
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Août 2020
    Messages : 13
    Points : 1
    Points
    1
    Par défaut Créer un jeu en ligne tour par tour
    Salut,

    comme indiqué dans le titre je cherche la meilleure solution pour créer un jeux en ligne RPG en PHP, mon soucis est de pouvoir detecter l'action d'un joueur sans recharger la page et de mettre à jour cette derniere en cachant ou en affichant le bouton.

    vous me direz de l' AJAX (ce que j'ai utilisé) mais le soucis c'est que comme c'est unidirectionnelle, j'ai utiliser un setInterval(mareqAJAX, 1000) 15 fois (durée pour que le joueur choisi son action ) mais je n'affiche le changement d'etat de la base de donné que dans le premier apel de la requete AJAX.

    une idéé pour résoudre le probleme ??

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    je n'ai pas compris à quel endroit se trouve le problème. pouvez-vous nous montrer un exemple ?

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Août 2020
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Août 2020
    Messages : 13
    Points : 1
    Points
    1
    Par défaut
    c'est compliqué a montré car il plusieur fichier ainsi qu'une BD

    mais en gros j'ai 2 variable dans la BD qui corespondent au J1 et au J2 qui sont à 0 au debut, ensuite au chargement de la page je lance une requete ajax qui boucle 15 fois grace à setInterval et qui met chacun leur variable à 1.

    la page fait apparaitre un lien clickable seulement si les 2 variable sont a 1.

    le probleme est le suivant (J1=0 J2=0) J1 charge la page (J1=1 J2=0) le lien n'apparait pas pour J1 jusqu'ici tout va bien, ensuite J2 charge la page (J1=1 J2=1) le lien apparait pour J2 mais n'apparait toujours pas pour J1 alors que la requete AJAX lancer par J1 tourne encore.

    c'est du au fait que le changement de la page ne se fait que sur le chargement de celle ci alors que je veux quelle ce fasse en continue

    donc il me faut une autre idée celle ci ne fonctionne pas

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    justement, dites nous à quoi correspondent cette variable et le lien.

    si par exemple le j1 doit choisir un nombre d'objet à utiliser, il a un formulaire pour faire ce choix.
    au moment où il valide le choix, un appel ajax va être envoyé au serveur pour dire "j1 à choisi 5 objets".

    et pendant ce temps sur la page de j2, il y a le code javascript qui demande la valeur choisie par j1.
    si le serveur répond "j1 n'a pas encore choisi" alors la page de j2 attend une seconde avant de reposer la question.
    et quand le serveur répond "j2 a choisi 5 objets", le déroulement peut continuer du côté de j2.

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Août 2020
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Août 2020
    Messages : 13
    Points : 1
    Points
    1
    Par défaut
    non il n'y a rien de celas je suis qu'au début, je test juste le moyen de d'afficher un lien au joueur pour lequel c'est le tour de jouer.

    les 2 variable correspondent au fait que les 2 joueur sont pret à jouer car ils ont charger la page

    je fais juste un onload="reqAJAX"

    et je souhaite que le lien qui ne sert à rien pour l'instant s'affiche aussi pour le J1 quand le J2 à charger sa page

  6. #6
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    mon exemple fonctionne aussi pour savoir si les 2 jours sont prêts.
    chaque joueur à un formulaire avec un bouton sur lequel il clique pour indiquer qu'il est prêt. et en même temps une boucle qui demande au serveur "est ce que l'autre joueur est prêt ?".

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Août 2020
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Août 2020
    Messages : 13
    Points : 1
    Points
    1
    Par défaut
    non car j'avais déja utiliser un bouton mais ce dernier recharge la page c'est pour celas que j'utilise un lien pour lequel j'ai donné l'apparence d'un bouton de plus jaurais le meme soucis car j'aurais le changement de la page seulement au clic mais pas dans la suite de la boucle setInteval

  8. #8
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 098
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 098
    Points : 8 207
    Points
    8 207
    Billets dans le blog
    17
    Par défaut
    le probleme est le suivant (J1=0 J2=0) J1 charge la page (J1=1 J2=0) le lien n'apparait pas pour J1 jusqu'ici tout va bien, ensuite J2 charge la page (J1=1 J2=1) le lien apparait pour J2 mais n'apparait toujours pas pour J1 alors que la requete AJAX lancer par J1 tourne encore.

    c'est du au fait que le changement de la page ne se fait que sur le chargement de celle ci alors que je veux quelle ce fasse en continue
    Qu'appelles-tu le "changement" de la page ?
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  9. #9
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    il vaut mieux utiliser un bouton parce que de base les liens sont là pour aller à un autre url.

    et ensuite en javascript vous pouvez faire en sorte que le clic sur le bouton ne recharge pas la page avec "preventDefault" :
    https://developer.mozilla.org/fr/doc...preventDefault

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Août 2020
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Août 2020
    Messages : 13
    Points : 1
    Points
    1
    Par défaut
    effectivement je vais essayer le preventDefault mais j'aurais toujours le probleme que la page n'afficheras pas le bouton pour le J1 au chargement de la page du J2

  11. #11
    Nouveau Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Août 2020
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Août 2020
    Messages : 13
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par Séb. Voir le message
    Qu'appelles-tu le "changement" de la page ?
    l'affichage du bouton (ou lien )

  12. #12
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 098
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 098
    Points : 8 207
    Points
    8 207
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par abdel783 Voir le message
    effectivement je vais essayer le preventDefault mais j'aurais toujours le probleme que la page n'afficheras pas le bouton pour le J1 au chargement de la page du J2
    Pourquoi ne mets-tu pas à jour la page de J1 lorsque J2 arrive en jeu ?

    C'est faisable en JavaScript, assez facilement même avec des libs "réactives" comme Vue ou Alpine.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  13. #13
    Nouveau Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Août 2020
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Août 2020
    Messages : 13
    Points : 1
    Points
    1
    Par défaut
    c'est exactement ce que j'essaie de faire mais qu' avec du php ce qui ne fonctionne pas, je vais essayer avec du jquery

  14. #14
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    Citation Envoyé par abdel783 Voir le message
    la page n'afficheras pas le bouton pour le J1 au chargement de la page du J2
    là vous parlez de ce qu'il se passe avant que les 2 joueurs soient prêt donc c'est encore une autre étape.

    donc si j'ai bien compris, il se passe ça du point de vue de J1:
    • j1 arrive sur la page et il voit un message "attente d'un autre joueur"
    • une boucle fait un 1er appel ajax pour demander s'il y a un 2e joueur
    • quand le 2e joueur est là, le bouton "prêt" apparait
    • pendant ce temps une 2e boucle fait un appel ajax pour savoir si le 2e joueur est prêt


    si le scénario se passe comme ça, vous voyez qu'il y a 2 morceaux de code à faire côté serveur : un 1er morceau qui répond à la question "est ce qu'il y a un autre joueur" et un 2e morceau qui répond à "est ce que l'autre joueur est pret ?"

  15. #15
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 098
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 098
    Points : 8 207
    Points
    8 207
    Billets dans le blog
    17
    Par défaut
    c'est exactement ce que j'essaie de faire mais qu' avec du php ce qui ne fonctionne pas, je vais essayer avec du jquery
    PHP ne peut agir sur une page que lors de son chargement complet.

    Si tu veux modifier une partie de page (ce qui est mieux pour un jeu), alors il faut faire du JS.

    Je te conseille d'éviter jQuery, obsolète dans le principe même, et de te tourner vers Vue ou Alpine (qui est une espèce de Vue light).

    Avec Vue / Alpine tu peux très facilement mettre à jour des portions de tes pages (ou tes pages complètes si besoin) sans les recharger et selon l'état du plateau de jeu en BdD obtenu avec fetch() ou Axios.

    Je peux te montrer un petit exemple si ça te botte.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  16. #16
    Nouveau Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Août 2020
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Août 2020
    Messages : 13
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par mathieu Voir le message
    là vous parlez de ce qu'il se passe avant que les 2 joueurs soient prêt donc c'est encore une autre étape.
    ...
    il y a juste un morceau de code qui verifi que J1=1 et J2=2 pour afficher le bouton
    • j1 arrive sur la page et ne voit pas le bouton (J1=1 et J2=0)
    • une boucle fait un appel ajax pour demander si J1=1 et J2 =1
    • quand le 2e joueur est là, le bouton "prêt" apparait car (J1 = 1 et J2=1)
    • la boucle au point 2 voit maintenant J1=1 et J2=1 mais le bouton n'apparait pas

  17. #17
    Nouveau Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Août 2020
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Août 2020
    Messages : 13
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par Séb. Voir le message
    Je peux te montrer un petit exemple si ça te botte.
    oui je veux bien stp

  18. #18
    Nouveau Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Août 2020
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Août 2020
    Messages : 13
    Points : 1
    Points
    1
    Par défaut
    partie js:
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    document.querySelector("#fname").addEventListener("click", function(event) {
    event.preventDefault();
    }, false);

    partie html:
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <button type="hidden" id="fname" name="fname" onclick="show()"><?php echo $lien?></button>

    sa ne fonctionne pas j'ai toujours le chargement de la page au click

  19. #19
    Nouveau Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Août 2020
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Août 2020
    Messages : 13
    Points : 1
    Points
    1
    Par défaut
    en fait preventdefault ne fonctionne pas sur les bouton parcontre j'ai trouver une solution pour empecher le chargement il fallait indique le type ='button' car sans il est utiliser par defaut en mode reinisialiser la page

  20. #20
    Nouveau Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Août 2020
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Août 2020
    Messages : 13
    Points : 1
    Points
    1
    Par défaut
    bon ben même avec du JS sa fonctionne pas

    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    function loadshow(str) {
        var pret_j1 = <?php echo json_encode($_SESSION["partie"]["pret_j1"]); ?>;
        var pret_j2 = <?php echo json_encode($_SESSION["partie"]["pret_j2"]); ?>;
        //var activ = <?php echo json_encode($_SESSION["partie"]["activ"]); ?>;
        if(pret_j1 == 1 && pret_j2 == 1){
        cach();
        }else{aff();}
     
        var xmlhttp = new XMLHttpRequest();
        xmlhttp.onreadystatechange = function() {
          if (this.readyState == 4 && this.status == 200) {
            document.getElementById("tx").innerHTML = this.responseText;
          }
        };
        xmlhttp.open("GET", "gethint.php?q=" + str, true);
        xmlhttp.send();
        i++;
        var myvar = setTimeout(function() {loadshow()}, 1000);
        if (i>15){clearTimeout(myvar);i = 0;}
     
    }

    voila mon code qui sert a faire une boucle toute les seconde en ajax au chargement de la page et je pense que ce n'est pas la bonne solution

Discussions similaires

  1. Créer un jeu en ligne
    Par LittleWhite dans le forum Développement 2D, 3D et Jeux
    Réponses: 11
    Dernier message: 31/12/2015, 02h19
  2. Jeu de role tour par tour
    Par Miistik dans le forum PC
    Réponses: 27
    Dernier message: 09/09/2014, 17h26
  3. Réponses: 3
    Dernier message: 25/08/2014, 16h46
  4. Jeu de Stratégie tour par tour en Java
    Par Thommas dans le forum Général Java
    Réponses: 13
    Dernier message: 30/04/2007, 17h00
  5. [VBA] créer ligne graphique par code
    Par cbleas dans le forum Access
    Réponses: 4
    Dernier message: 29/08/2006, 07h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo