function enlever_echec_roi($jeu, $trait, $coups) { // Cette fonction enlever à $coups : les coups possibles par le joueur $trait // dans la partie $jeu, les coups qui mettent le roi de $trait en échec $coups_valides = []; foreach ($coups as $coup) { if (est_un_roque($coup)) { // On vérifie que le joueur peut roquer : $cases_menacees = menace_all($jeu, $trait == 1 ? 2 : 1); // fonction dans gestion_menaces.php $j = $coup[1]; if ($coup[4] == 'XX') { // Petit roque : i=5,6,7 ne doivent pas être menacées print_r($cases_menacees[5][$j]); print_r($cases_menacees[6][$j]); print_r($cases_menacees[7][$j]); if (!($cases_menacees[5][$j] == true || $cases_menacees[6][$j] == true || $cases_menacees[7][$j] == true)) { $coups_valides[] = $coup; } } else { // Grand roque : i=3,4,5 ne doivent pas être menacées if (!($cases_menacees[3][$j] == true || $cases_menacees[4][$j] == true || $cases_menacees[5][$j] == true)) { $coups_valides[] = $coup; } } } else { // On effectue le coup : $jeu_tps = maj_coup($jeu, $coup); // fonction dans utilitaires_coups.php // Si le roi n'est pas en echec, on ajoute ce coup : if (!roi_en_echec($jeu_tps, $trait)) { //fonction dans utilitaires.php $coups_valides[] = $coup; } } } return $coups_valides; }
// On vérifie si l'adversaire peut effectuer un pp : $pp = tester_pp($bdd_jeu, $coup, $bdd_jeu[$coup[2]][$coup[3]]); // fonction dans utilitaires_coups.php // On regarde les cases que menacent le joueur adverse après le coup : $menaces_aps = menace_all($bdd_jeu, $trait_aut); //fonction dans gestion_menaces.php // On regroupe les deux tableaux de menaces $menace_glb = union_menaces($menaces_avt, $menaces_aps); //fonction dans utilitaires_menaces.php // On vérifie si l'adversaire peut voir le coup : $voit = voir_coup($coup, $menace_glb); //fonction dans utilitaires_vues.php $il_joue = $voit[0]; $voir_nat = $voit[1]; // On vérifie si l'adversaire est en échec : $echec_autre = roi_en_echec($bdd_jeu, $trait_aut); // fonction dans utilitaires.php // On calcule les coups possibles que peut effectuer l'adversaire : $coup_pos = coup_all($bdd_jeu, $trait_aut, $roques_aut, $pp); // On recoupe à $coup_pos les coups qui mettent le roi en échec : $coups_pos = enlever_echec_roi($bdd_jeu, $trait_aut, $coup_pos); // fonction dans utilitaires_coups.php // On vérifie que la partie n'est pas fini : if (count($coups_pos) == 0) { // On vérifie si l'adversaire est en échec et mat ou pat : if ($echec_autre == true) { $fin = 'mat'; } else { $fin = 'pat'; } } else {