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;
}
Exemplo n.º 2
0
 // 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 {