/**
Utilitaires pour la recherche des coups :
**/
function tester_coups_vecteur($jeu, $i, $j, $di, $dj, $trait)
{
    // Fonction permettant de gérer les coups des pièces pouvant parcourir des lignes entières (fou, tour ,dame)
    // Les variables $di et $dj permettent de choisir le sens de déplacement ainsi :
    // $di = 1 et $dj = 0 correspond à un déplacement vertical vers la droite
    // $di = 0 et $dj = 1 correspond à un déplacement horizontale vers le haut
    // ...etc
    $cases = '';
    // Tant qu'il n'y a pas de pièce et que ce n'est pas le bord on continue
    $d = 1;
    $stop = false;
    while (!$stop) {
        // On récupère les informations sur la case
        $info = info_case($jeu, $i + $di * $d, $j + $dj * $d, $trait);
        //Fonction dans utilitaires.php
        if ($info[0] & ($info[1] == 'ennemi' || $info[1] == 'vide')) {
            $cases .= Vec2StrCoup($i, $j, [$i + $di * $d, $j + $dj * $d], $trait);
            // Fonction définit dans utilitaires.php
        }
        if ($info[0] == false || $info[1] != 'vide') {
            $stop = true;
        }
        // Stop si la case bloque
        $d++;
    }
    return $cases;
}
示例#2
0
function prendrePceVide($jeu, $i, $j, $trait)
{
    // Cette fonction teste si le joueur $trait, si la pièce en i,j est vide
    // et si il peut prendre ou non la pièce ennemi en $i, $j
    $info = info_case($jeu, $i, $j, $trait);
    if ($info[0] & $info[1] == 'vide') {
        return [$i, $j];
    } else {
        return false;
    }
}
function coup_roi($jeu, $trait, $i, $j, $roques)
{
    // Initialisation :
    $cases = '';
    // Le roi peux se déplacer d'une case dans l'ensemble des directions
    // et prendre une case dans l'ensemble des direction :
    for ($di = -1; $di <= 1; $di++) {
        for ($dj = -1; $dj <= 1; $dj++) {
            $cases .= Vec2StrCoup($i, $j, prendrePce($jeu, $i + $di, $j + $dj, $trait), $trait);
        }
    }
    if (in_array('XX', $roques)) {
        // Petit roque possible si les cases j=6,7 sont vides (on gère les echecs ailleurs) :
        $info1 = info_case($jeu, 6, $j, $trait);
        //fonction dans utilitaires.php
        $info2 = info_case($jeu, 7, $j, $trait);
        if ($info1[1] == 'vide' & $info2[1] == 'vide') {
            $cases .= '[' . $i . ',' . $j . ',7,' . $j . ', "XX"],';
        }
    }
    if (in_array('XXX', $roques)) {
        // Grand roque possible si les cases j=2,3,4 sont vides (on gère les echecs ailleurs) :
        $info1 = info_case($jeu, 2, $j, $trait);
        $info2 = info_case($jeu, 3, $j, $trait);
        $info3 = info_case($jeu, 4, $j, $trait);
        if ($info1[1] == 'vide' & $info2[1] == 'vide' & $info3[1] == 'vide') {
            $cases .= '[' . $i . ',' . $j . ',3,' . $j . ', "XXX"],';
        }
    }
    return $cases;
}