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

Classe BoiteCarte

  • La classe BoiteCarte ne sert qu'à produire un composant HTML pour représenter une instance de Carte
    Diagramme UML de la classe BoiteCarte
  • /**
     * Classe BoiteCarte
     *
     * Classe permettant de représenter une carte dans un span HTML
     * @author Dominique Fournier
     * @date 2017-2022
     * @version 1.3 compatible PHP7.4
     */
    
    require_once 'Carte.php';
    
    class BoiteCarte {
    
      /**
       * Classe destinée à produire un composant HTML pour afficher une carte
       * @static
       * @access public
       * @var array (string[])
       */
      public static $COULEURS = array("spades","hearts","clubs","diams");
    
      /**
         @static
         @access public
         @var array (string[])
       */
      public static $HAUTEURS= array("2","3","4","5","6","7","8","9","10","J","Q","K","A");
    
      /**
       * $carte une instance de Carte
       * @access protected
       * @var Carte
       */
      protected Carte $carte;
    
      /**
       * @access public
       * @param Carte $c la carte à afficher dans la boite html
       */
      public function __construct(Carte $c) {
        $this->carte = $c;
      }
    
      /**
       * @access public
       * @return Carte $this->carte
       */
      public function getCarte() : Carte {
        return $this->carte;
      }
    
      /**
       * @access public
       * @return string un span html représentant $this->carte
       */
      public function __toString(): string {
        $nomCouleur = self::$COULEURS[$this->carte->getCouleur()];
        switch ($nomCouleur) {
        case "spades":
        case "clubs":
          $col = "black";
          break;
        case "hearts":
        case "diams":
          $col = "red";
          break;
        default:
          $col="green";
        }
        $resultat = "";
        if ($this->carte->getHauteur() != 8) {
          $resultat .=  " ";
        }
        $resultat .= self::$HAUTEURS[$this->carte->getHauteur()].":&".$nomCouleur.";";
        $resultat .= " ";
        return $resultat;
      }
    
    }
    
  • Test de la classe (à réaliser au fur et à mesure de l'écriture du code) :
    
    $bc0 = new BoiteCarte(new Carte(0,10));
    echo $bc0;
     Q:♠
    $bc1 = new BoiteCarte(new Carte(1,10));
    echo $bc1;
     Q:♥
    $bc2 = new BoiteCarte(new Carte(2,10));
    echo $bc2;
     Q:♣
    $bc3 = new BoiteCarte(new Carte(3,10));
    echo $bc3;
     Q:♦
    // test numéro couleur non correct
    $bc4 = new BoiteCarte(new Carte(4,10));
    echo $bc4;
     Q:&;