function menace_all($jeu, $trait) { // Initialisation : $cases_men = ''; // On parcours l'ensemble du plateau pour déterminer l'ensemble des cases menacées par un joueur : for ($i = 1; $i <= 8; $i++) { for ($j = 1; $j <= 8; $j++) { if (est_au_joueur($jeu, $i, $j, $trait)) { //Fonction dans utilitaires.php // On récupère la nature de la pièce à la position $i, $j si la case est au joueur $trait $nature = $jeu[$i][$j][0]; // On stocke quelle pièce est la menace en premier $cases_men .= '[' . $i . ',' . $j . '],'; // Puis en fonction de sa nature on détermine ce qu'elle menace : if ($nature == 'p') { $cases_men .= menace_pion($jeu, $trait, $i, $j); } else { if ($nature == 'C') { $cases_men .= menace_cavalier($jeu, $trait, $i, $j); } else { if ($nature == 'T') { $cases_men .= menace_tour($jeu, $trait, $i, $j); } else { if ($nature == 'F') { $cases_men .= menace_fou($jeu, $trait, $i, $j); } else { if ($nature == 'D') { $cases_men .= menace_dame($jeu, $trait, $i, $j); } else { if ($nature == 'R') { $cases_men .= menace_roi($jeu, $trait, $i, $j); } } } } } } } } } $cases_men = '[' . substr($cases_men, 0, -1) . ']'; $cases_men = json_decode($cases_men); // A l'aide de se vecteur on associe à chacune des cases du plateau : // - true si elle est menacee // - false si ne l'est pas $jeu_menaces = array_fill(1, 8, array_fill(1, 8, false)); foreach ($cases_men as $menace) { $jeu_menaces[$menace[0]][$menace[1]] = true; } return $jeu_menaces; }
function coup_all($jeu, $trait, $roques, $pp) { // Initialisation : $cases_coup = ''; // On parcours l'ensemble du plateau pour déterminer l'ensemble des coups possibles par un joueur : for ($i = 1; $i <= 8; $i++) { for ($j = 1; $j <= 8; $j++) { if (est_au_joueur($jeu, $i, $j, $trait)) { //Fonction dans utilitaires.php // On récupère la nature de la pièce à la position $i, $j si la case est au joueur $trait $nature = $jeu[$i][$j][0]; // En fonction de sa nature on détermine ce qu'elles sont les coups disponibles : if ($nature == 'p') { $cases_coup .= coup_pion($jeu, $trait, $i, $j); } else { if ($nature == 'C') { $cases_coup .= coup_cavalier($jeu, $trait, $i, $j); } else { if ($nature == 'T') { $cases_coup .= coup_tour($jeu, $trait, $i, $j); } else { if ($nature == 'F') { $cases_coup .= coup_fou($jeu, $trait, $i, $j); } else { if ($nature == 'D') { $cases_coup .= coup_dame($jeu, $trait, $i, $j); } else { if ($nature == 'R') { $cases_coup .= coup_roi($jeu, $trait, $i, $j, $roques); } } } } } } } } } // On ajoute les pp possibles : $cases_coup .= $pp; $cases_coup = '[' . substr($cases_coup, 0, -1) . ']'; $cases_coup = json_decode($cases_coup); return $cases_coup; }
function tester_pp($jeu, $coup, $piece) { $trait = $piece[1]; $pp_possible = ''; $col_pion = $coup[0]; $case_pion = $coup[3] + ($trait == 2 ? 1 : -1); if ($piece[0] == 'p') { // on vérifie que le déplacement est bien de 2 : if (abs($coup[1] - $coup[3]) == 2) { // On vérifie la possible du pp à l'aide du coup précédent if ($trait == 1) { $x = 4; } else { $x = 5; } // On vérifie si il y a un pion à droite : if (est_au_joueur($jeu, $col_pion - 1, $x, $trait == 1 ? 2 : 1)) { // Fonction dans utilitaires.php // On vérfie si la pièce est un pion : if ($jeu[$col_pion - 1][$x][0] == 'p') { $pp_possible .= '[' . ($col_pion - 1) . ',' . $x . ',' . $col_pion . ',' . $case_pion . ',"pp"],'; } } // On vérifie si il y a un pion à droite : if (est_au_joueur($jeu, $col_pion + 1, $x, $trait == 1 ? 2 : 1)) { // On vérfie si la pièce est un pion : if ($jeu[$col_pion + 1][$x][0] == 'p') { $pp_possible .= '[' . ($col_pion + 1) . ',' . $x . ',' . $col_pion . ',' . $case_pion . ',"pp"],'; } } } } return $pp_possible; }
function roi_en_echec($jeu, $trait) { // Cette fonction teste si le roi du joueur $trait est en échec dans la pratie $jeu $cases_menacees = menace_all($jeu, $trait == 1 ? 2 : 1); // On récupère la case du roi du joueur $trait : for ($i = 1; $i < 9; $i++) { for ($j = 1; $j < 9; $j++) { if (est_au_joueur($jeu, $i, $j, $trait)) { if ($jeu[$i][$j][0] == 'R') { // Si elle est menacée elle est en échec // On retroune donc la valeur du tableau de menace // au niveau de la case où se situe le roi return $cases_menacees[$i][$j]; } } } } }