nbRest=15; $this->affiche(""); $this->choix(); } //fonction permettant de récupérer les valeurs passées par le formulaire function init($nbPris,$nbAllumettes) { $this->nbRest=($nbAllumettes-$nbPris); //exécution de la fonction joueOrdi() $this->joueOrdi(); } //fonction affichant les allumettes restantes (précédé éventuellement du message indiquant ce qu'a fait l'ordinateur) function affiche($mesg) { //si un message est passé en paramètre if (isset($mesg)) { //affichage du message echo "$mesg

"; } //affichage d'un tableau avec une allumette dans chaque cellule echo ""; //pour chaque allumette, affichage d'une cellule for ($i=0;$i<$this->nbRest;$i++) { echo ""; } //fermeture de la ligne et du tableau echo "


"; } //fonction affichant le select à l'humain pour que celui-ci choisisse 1, 2 ou 3 allumettes function choix() { //on teste la variable nbRest switch ($this->nbRest) { //s'il n'y a plus d'allumettes (l'humain a gagné) case "0": //exécution de la fonction finPartie() $this->finPartie("humain"); break; //s'il ne reste qu'une allumette (l'humain a perdu) case "1": //exécution de la fonction finPartie() $this->finPartie("ordi"); break; //s'il ne reste que deux allumettes case "2": //affichage du select contenant comme choix uniquement 1 ou 2 echo "
"; echo "Combien d'allumettes voulez-vous prendre ? "; echo ""; //transmission par le formulaire du nombre restant d'allumettes (avant le choix) echo " "; echo "
"; break; //s'il reste au moins 3 allumettes default: //affichage du select echo "
"; echo "Combien d'allumettes voulez-vous prendre ? "; echo " "; //transmission par le formulaire du nombre restant d'allumettes (avant le choix) echo "nbRest\">"; echo "
"; break; } } //fonction calculant et retournant le nombre "idéal" d'allumettes à prendre (s'il existe) //pour l'ordinateur function calculeNb() { //calcul du reste de la division du nombre d'allumettes restant par 4 //pour connaitre le nombre d'allumettes que doit prendre l'ordinateur //pour essayer de gagner $rest=$this->nbRest%4; //on teste le reste de la division switch($rest) { //si le reste est égal à 0 (cas où il reste 4, 8 ou 12 allumettes) case "0": //l'ordinateur prend 3 allumettes $choix=3; break; //si le reste est égal à 1 (cas où il reste 5, 9 ou 13 allumettes) case "1": //si l'humain joue bien, l'ordinateur a perdu, donc l'ordinateur prend //ce qu'il veut srand((double)microtime()*1000000); $choix=rand(1,3); break; //si le reste est égal à 2 (cas où il reste 6, 10 ou 14 allumettes) case "2": //l'ordinateur prend 1 allumette $choix=1; break; //si le reste est égal à 3 (cas où il reste 7, 11 ou 15 allumettes) case "3": //l'ordinateur prend 2 allumettes $choix=2; break; } //renvoie du choix de l'ordinateur return($choix); } //fonction faisant jouer l'ordinateur function joueOrdi() { //on teste la variable nbRest switch ($this->nbRest) { //s'il ne reste plus qu'une allumette case "1": //l'ordinateur prend cette dernière allumette et a perdu $choixOrdi=1; break; //s'il reste 2 allumettes case "2": //l'ordinateur (qui n'est quand même pas totalement idiot, //quel que soit le niveau de difficulté) prend 1 allumette et a gagné $choixOrdi=1; break; //s'il reste 3 allumettes case "3": //l'ordinateur prend 2 allumettes et a gagné $choixOrdi=2; break; //tous les autres cas default: //le nombre a choisir est calculé par la fonction calculeNb() $choixOrdi=$this->calculeNb(); break; } //on diminue le nombre restant d'allumettes du nombre qu'a choisi l'ordinateur $this->nbRest-=$choixOrdi; //éxécution de la fonction affiche() (on passe un message en paramètre indiquant //le nombre d'allumettes qu'a pris l'ordinateur) $this->affiche("L'ordinateur a pris $choixOrdi allumette(s)"); //exécution de la fonction choix() qui va permettre à l'humain de jouer //ou va terminer la partie si l'ordinateur a perdu $this->choix(); } function finPartie($vainqueur) { echo "Fin de la partie
"; if ($vainqueur=="humain") { echo "Vous avez gagné !
"; } else { echo "Vous avez perdu.
"; } echo "Cliquez ici pour rejouer.
"; } } //si la partie n'est pas encore commencée, c'est-à-dire si nbAllumettes n'existe pas if (!isset($nbAllumettes)) { //création d'une nouvelle partie $partie1=new partie; $partie1->start(); $rest=$partie1->nbRest; session_register("rest"); } //si la partie est déjà commencée, c'est-à-dire si nbAllumettes existe else { //on continue la partie en instanciant la classe "partie" (la précédente n'existe en effet plus) //et en lançant la fonction "init()" $partie1=new partie; $partie1->init($nbPris,$nbAllumettes); } ?>