jeu du OXO en PHP

jeu du OXO en PHP - PHP - Programmation

Marsh Posté le 08-06-2007 à 14:29:03    

Bonjour,  
je suis debutante en PHP et je voudrais bien quelques conseils pour faire un jeu de X et O en php.  
Ce que j'ai fait pour le moment:j''ai cree une base de donnee ou j'ai une table user(userid, username, password) une table game(gameid, valeur, userid) une table cell(cellname, time, gameid, valeur)  
 
Je garde en $_SESSION l'utilisateur(le jeu peut etre joue a deux), la valeur pour chaque user, le game id.  
 
Si c'est le tour d'un joeur il devrait avoir affiche des boutons si les cellules respectives n'on pas une valeur dans la table cell et les vvaleurs la ou il y a dans la table des valeurs inscrites.  
 
Si ce n'est pas son tour, alors il devrait avoir que affiche les valeurs ou rien dans un tableau.  
 
Le probleme est que je ne sais pas comment transmettre la valeur d'une cellule qui a ete clicke dans le tableau cell(sachant que cette valeur est en $_SESSION) et que je devrais afficher le tableau de 9 cellules avvec deux for.  
 
J'arrive a afficher un tableau de 9 case en deux for, et afficherr leur numerro d'ordre avec un array de deux dimensions(less deux boucles).  
 
Ca c'est mon raisonnement.  
 
Vu que je n'arrive pas a avvancer il est possible que je marche sur une mauvaise piste avec cette idee, donc je suis prete a revvoir mon raisonnement si vous avez un meilleur  
 
s'il vous plait donnez moi quelques idee comment reorganiser ce raisonnement prce que la je suis honnetement bloquee.  
 
Merrci et a plus

Reply

Marsh Posté le 08-06-2007 à 14:29:03   

Reply

Marsh Posté le 08-06-2007 à 14:39:03    

qu'est ce que tu appel un jeu de X et O ?
le principe ?

Reply

Marsh Posté le 08-06-2007 à 15:25:00    

Elle parle du morpion (aussi nomé tic-tac-toe)
 
$_SESSION ne sert qu'a garder des valeurs d'une page à l'autre sans avoir à se soucier des pages par lesquelles le visiteur passe. Ces valeurs sont d'ailleur propre à chaque visiteur. (si t'as deux joueurs sur deux ordis différents, ils n'auront pas accés au $_SESSION de l'autre)
En fait, tu dois juste compléter ta table "cell" à chaque fois qu'un joueur clique sur une case quand c'est son tour. L'autre joueur ne pouvant être prévenus automatiquement, il faut que son navigateur redemande la page réguliérement afin de savoir si elle a changé (et si l'autre joueur à joué)
 
C'était sur ça que tu bloquais?

Reply

Marsh Posté le 08-06-2007 à 19:59:07    

Si tu veux que le navigateur redemande la table "cell" tu peux utiliser AJAX mais cela oblige que les utilisateurs aient javascript d'activé. Sinon tu peux essayer de jetter un coup d'oeil du coté des socket mais je ne suis pas sûr. Pour info AJAX te permet d'envoyer une requete à ton serveur sans recharger ta page. Tu peux utiliser la fonction setinterval en JS qui envoyer une requete à ton serveur tout les X millisecondes


Message édité par kyodenball le 08-06-2007 à 20:03:28
Reply

Marsh Posté le 12-06-2007 à 12:50:52    

Oui c'est le morpion.
un peu.
 
Oui mais je ne sais pas comment faire.
en fait il y a deux sitx uations d'affichage:
Si c'est mon tour on va dire(si je ne suis pas le dernier qui a ecrit dans la table cell, et alors je dois avvoir affiche un tableau avec des valeurs(de la base de donnees) et des bouttons sans valeur la ou dans la table il n y a rien.
Si ce n\est pas mon tour(si la derniere valeur inscrite est de l'autre joueur) alors je vais avoir affiche que des valeurs dans les cellules du talbleau(la ou il y a les valeurs) et rien la ou il n'a pas de valeur.
 
Le probleme qui me bloque est que je n'arrive plus(tellement j'ai stresse et j'ai esssaye a me concentrer et a reprendre ce jeu...j\en ai marre) mais bon ca va passer
 
Alors en ce moment j\ai la base de donne,  
le probleme est comment afficher avvec des for ce que je viens de te dire en haut.
Est ce que c'est possible ou je devrai simplement donnerr a toutes les cellules des noms style 1-1 1-2 1-3 ainsi de suite et puistravailler avec des tableaux, et en fait les tableau. Mais apres je bloque parce que je ne sais pas comment passer des boutons (1-1 1-2 1-3 ...)aux tableaux, des tableaux a la table cell ensuite de la table aux tableaux et ensuite a afficherr pour chqeus boutton et pour chaque joeur.
 
HM.
 

Reply

Marsh Posté le 12-06-2007 à 14:22:52    

Le jeu du X et O
 
C'est un jeu qui se joue a deux.
Chaque joeur choisit une des valeurs le X ou le O.
On a un tableau de 3 lignes et 3 colonnes.
 
Le but du jeu est d'arriver a faire une ligne ou une colonne ou une diagonale de la meme valeur.Le joeur qui arrive a faire sa est gagnant.
 
Chaque joeur a le droit de mettre une seule fois sa valeur, ensuite il aatttend que l'autre joeur fasse son tour. Et ainsi de suite jusqu'a ce que on a une partie gagnante ou que toutes les cellules sont cochees mais le jeu n'a pas de gagnant.
 
Voila un peu le principe.
 
 
 
 

Reply

Marsh Posté le 12-06-2007 à 14:52:10    

Tu cherches à faire un jeu qui se joue à deux ou contre l'ordinateur ?

Reply

Marsh Posté le 12-06-2007 à 16:07:59    

J'essaie de faire un jeu qui peut se jouer a deux avec session.
mais

Reply

Marsh Posté le 12-06-2007 à 16:10:02    

j'ai une base de donnee , mais maintenant ce que je n'arrive pas est de structurer le fichier en PHP.
uf

Reply

Marsh Posté le 12-06-2007 à 16:12:56    

Pose une vraie question, si tu veux de l'aide.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 12-06-2007 à 16:12:56   

Reply

Marsh Posté le 12-06-2007 à 16:27:02    

anais47 a écrit :

Oui mais je ne sais pas comment faire.
en fait il y a deux sitx uations d'affichage:
Si c'est mon tour on va dire(si je ne suis pas le dernier qui a ecrit dans la table cell, et alors je dois avvoir affiche un tableau avec des valeurs(de la base de donnees) et des bouttons sans valeur la ou dans la table il n y a rien.
Si ce n\est pas mon tour(si la derniere valeur inscrite est de l'autre joueur) alors je vais avoir affiche que des valeurs dans les cellules du talbleau(la ou il y a les valeurs) et rien la ou il n'a pas de valeur.
 
Le probleme qui me bloque est que je n'arrive plus(tellement j'ai stresse et j'ai esssaye a me concentrer et a reprendre ce jeu...j\en ai marre) mais bon ca va passer


Tu sais que t'as quasiment ton algo avec ça?
En bref, pour chaque case :

  • si j'ai un X, j'affiche l'image du X
  • si j'ai un O, j'affiche l'image du O
  • si j'ai rien et que c'est à moi, j'affiche un formulaire avec un bouton
  • si j'ai rien et que ca n'est pas à moi, j'affiche une image uniforme (tout est de la même couleur)

Reply

Marsh Posté le 12-06-2007 à 17:03:50    

ok, bon deja merci de m'eclairer un peu les idees>>>omega2.vraiment.
Tu as raison.
Alors pour voir encore plus clair.
 
Donc pour chaque case je verifie si elle a une valeur.(je fais un query de toutes les valeur dans la table)
 
Si elle a une valeur alors je vais la afficher(on va dire que j'utilise que du texte).
 
else(si elle na pas de valeur)
         
          si c'est mon tour
              si la variable POST isset je vais introduire dans la table la valeur
              else je vais afficher le formulaire avec le bouton
         else(si ce n'est pa mon tour)
             je vais afficher rien
 qu'est ce que tu en penses omega?

Reply

Marsh Posté le 12-06-2007 à 17:13:16    

Le "si la variable POST isset je vais introduire dans la table la valeur " n'est pas à faire au moment d'afficher le tableau mais avant.
Au besoin, tu :
1) récupéres les données de la table
 
2) vérifis si c'est à toi de jouer
2.1) vérifis si t'as choisit une case => si oui, alors vérification de la validité du choix (éviter les tricheurs qui cherchent à jouer là où il y a déjà quelque chose ou un bug du au cache du navigateur qui ferait que le joueur à eu droit à une grille pas à jour)
2.1.1) enregistrer la valeur dans la base si valide
2.1.2) modifier les données déjà récupéré pour prendre en compte le choix  
2.1.3) et se considéré "comme en attente du choix de l'adversaire"
 
3) afficher la grille de jeux avec ou sans les boutons
 
 
 
Maintenant à toi de coder tout ça. :)

Reply

Marsh Posté le 12-06-2007 à 17:22:35    

Il me reste un truc que je ne comprends pas.
Le truc de chaque case.
 
C'est ca qui me casse les pieds.
Comme je fais pour les parcourir et faire le lien entre ce qui se voit, et la table par un array.
Je suis incap en ce moment avec mon experience de voir comment je devrais faire.C'est a dire je ne comprends pas...

Reply

Marsh Posté le 12-06-2007 à 17:30:41    

Ca dépend de ta table (au niveau base de donnée).
Si dans ta table t'as les coordonées de chaque case, alors il faut les récupérer en les triant par ordre croissant de X en majeur et de Y en mineur.
Sinon, les numéros des cases correspondront à une grille du genre :
1 2 3
4 5 6
7 8 9
 
En dehors de ça, soit tu listes directement ce que t'as retourné la base de donnée (surtout si t'as les 9 cases de renseigné dans la base et que tu les récupéres aprés avoir mis à jours la table) soit tu passes par une variable tableau de trois cases par trois cases. (accés à une case sous la forme : $ValeurDeMaCase=$tab[$x][$y]; )
 
Là, va faloir que tu te débrouilles seul pour la suite, je n'ai pas le temps de t'aider d'avantage aujourd'hui.

Reply

Marsh Posté le 12-06-2007 à 17:49:22    

merci deja pour tout ce que tu m'as explique.

Reply

Marsh Posté le 13-06-2007 à 11:40:25    

Salut,
 
aujourd'hui je suis arrivee a faire ce code pour afficher les valeurs de la base de donne
<html>
<head>
</head>
<body>
 
 
  <?php
   
  $con=mysql_connect('localhost','root','');
  mysql_select_db("test_db",$con);
   
  $res=mysql_query("SELECT cellname, val_id FROM cell ORDER BY cellname ASC" );
   
   while($row=mysql_fetch_array($res))
  {
  $cell[$row['cellname']] = $row['val_id'];
  }
  print_r($cell);
   echo '<table align=center bgcolor="#FFFF00">';
   for($i=1;$i<4;$i++)
    {
    echo '<tr>';
    for($j=1;$j<4;$j++)
     {
     echo '<td>';
     echo $cell["$i"."$j"];
     echo '</td>';
     }  
    echo '</tr>';
    }
  echo '</table>';
 
  mysql_close($con);
   
  ?>
 
</body>
</html>
 
Je fais des petits pas.
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed