5
153

Une partie de poker

Téléchargez le code du jeu de poker dans le dossier So-o :

  1. So-o
    1. So-o.php
    2. OL.php
    3. Object.php
    4. ...
    5. poker
      1. poker.php
      2. Card.php
      3. Hand.php
      4. Deck.php
      5. ...

Dans le dossier poker, exécutez le programme poker.php :

$ php -f poker.php 
3h,4h,4s,Jd,6c -> ONEPAIR
Keep (1-5...)? 23

Vous avez une paire. Le programme demande quelles cartes vous voulez garder. Entrez 23 pour garder la deuxième et la troisième carte et tirer 3 nouvelles cartes. Le programme affiche le résultat du second tirage :

Js,4h,4s,Ks,4c -> THREEOFKIND
Play or (q)uit? 

Vous avez un brelan. Appuyez sur Entrée pour rejouer :

3c,Ah,2s,7d,3d -> ONEPAIR
Keep (1-5...)? 15
3c,5h,3s,5d,3d -> FULLHOUSE
Play or (q)uit? q

Entrez q pour quitter le programme.

CODE
  1. set_include_path(dirname(getcwd()) . PATH_SEPARATOR . getcwd());

Met le paramètre de configuration include_path de PHP au répertoire courant et au répertoire qui contient le code de So-o.

  1. require_once 'So-o.php';
  2.  
  3. require_once 'Deck.php';

Charge So-o et la classe Deck.

  1. $deck=sendmsg($Deck, 'new', true);
  2. sendmsg($deck, 'shuffle');

Crée un jeu de cartes qui est automatiquement mélangé quand toutes les cartes ont été tirées. Mélange le jeu.

  1. $stdin = fopen('php://stdin', 'r');

Ouvre le clavier pour interagir avec l'utilisateur.

  1. do {

Joue un tour indéfiniment tant que l'utilisateur ne sort pas du jeu.

  1. }
  2. while (true);
  3.  
  4. fclose($stdin);

Ferme le clavier avant de quitter le programme.

  1.     $hand=sendmsg($deck, 'hand');
  2.     sendmsg($hand, 'print', true);

Tire une main de cinq cartes et l'affiche.

  1.     echo 'Keep (1-5...)? ';
  2.     $line = fgets($stdin);
  3.     if ($line === false) {
  4.         break;
  5.     }
  6.     trim($line);

Demande à l'utilisateur quelles cartes il veut garder. Lit la réponse au clavier. Quitte si l'entrée est fermée.

  1.     $keep=array_fill(1, 5, false);
  2.     preg_match_all('/\d/', $line, $r);
  3.     foreach ($r[0] as $n) {
  4.         if ($n >=1 and $n <= 5) {
  5.             $keep[$n]=true;
  6.         }
  7.     }

Remplit le tableau de cinq booléens $keep, un pour chaque carte, avec false puis avec true pour chaque carte qui doit être gardée.

Retire une carte pour chaque carte qui n'est pas gardée. Affiche la main.

  1.     echo 'Play or (q)uit? ';
  2.     $line = fgets($stdin);
  3.     if ($line === false) {
  4.         break;
  5.     }
  6.     trim($line);
  7.     if ($line[0] == 'q' or $line[0] == 'Q') {
  8.         break;
  9.     }

Demande à l'utilisateur s'il veut continuer à jouer ou quitter la partie. Quitte le programme si la réponse commence par q or Q ou si l'entrée est fermée.

VOIR AUSSI

Le manuel PHP

Commentaires

Votre commentaire :
[p] [b] [i] [u] [s] [quote] [pre] [br] [code] [url] [email] strip aide 2000

Entrez un maximum de 2000 caractères.
Améliorez la présentation de votre texte avec les balises de formatage suivantes :
[p]paragraphe[/p], [b]gras[/b], [i]italique[/i], [u]souligné[/u], [s]barré[/s], [quote]citation[/quote], [pre]tel quel[/pre], [br]à la ligne,
[url]http://www.izend.org[/url], [url=http://www.izend.org]site[/url], [email]izend@izend.org[/email], [email=izend@izend.org]izend[/email],
[code]commande[/code], [code=langage]code source en c, java, php, html, javascript, xml, css, sql, bash, dos, make, etc.[/code].