L3 Info : PHP et Applications Web
 
◃  Ch. 3 Un coup de poker  ▹
 

Script principal de l'appli

  • Le script principal jeuPoker.php gère la session et les états de l'application
    Diagramme d'état de l'application
    include_once "BoiteJeuCartes.php";
    include_once "BoiteMain.php";
    include_once "PokerUI.php";
    
    function afficheDebutHTML() {
    echo "<!doctype html>
            <html lang='fr'>
    <head>
    <meta charset='UTF-8'>
    <title>Poker</title>
    
    <link rel='stylesheet' type='text/css' href='poker.css' />
    </head>
    <body>
    <div class='poker'>
    <h1>Manipuler une main de 5 cartes au Poker</h1>\n";
    }
    
    
    function afficheFinHTML() {
    echo "</div>
    
    </body>
    </html>\n";
    }
    
    // initialisation ou entretien de la session
    session_start();
    
    // on peut commencer à afficher le début de la page web
    afficheDebutHTML();
    
    // Vérification de la situation de la session
    
    // premier passage l'objet gerant l'UI dans la session n'existe pas
    if (!isset($_SESSION['UI'])) {
      $_SESSION['UI' ] = new PokerUI();
      $UI = &$_SESSION['UI'];
    
      PokerUI::afficheMessage("Première main");
      // on affiche la main et propose de changer des cartes
      $UI->afficheMain();
    
      $UI->afficheFormulaireMain();
    
    }
    else {
      // l'application est déjà lancée
      // création d'une variable locale au script
      $UI = &$_SESSION['UI'];
    
      // une partie est déjà commencée
      if (isset($_GET) && isset($_GET['action'])) {
    
        switch ($_GET['action']) {
    
        case 'changer':
          PokerUI::afficheMessage("Ancienne main");
          $UI->afficheMain();
    
          if (isset($_GET['main']) && is_array($_GET['main'])) {
    	// on procède au changement de cartes
    	$UI->renouvelleMain($_GET['main']);
          }
    
          PokerUI::afficheMessage("Nouvelle main");
          $UI->afficheMain();
    
          $UI->afficheFormulaireMain();
          break;
    
        case 'finir':
          $UI->afficheMain();
          session_unset();
          session_destroy();
          PokerUI::afficheLienRecommencer();
          break;
    
        case 'raz':
          // cas de la remise à zéro : une variable de formulaire transmet l'ordre
          session_unset();
          session_destroy();
          PokerUI::afficheLienRecommencer();
          break;
    
        default :
          echo "Une action imprévue a été demandée";
        }
    
      }
    }
    
    // Quoi qu'il arrive on affiche l'état du jeu
    // fonctionne meme quand action=raz !
    PokerUI::afficheMessage("État du paquet");
    $UI->affichePaquetCarte();
    
    
    
      // on termine l'affichage de la page html
    afficheFinHTML();
  • test du script