Example #1
0
function getMovesLongAlg($last = false)
{
    global $movesArray;
    $moves = array();
    for ($i = 0; $i < count($movesArray) - 1; $i++) {
        if ($last) {
            $i = count($movesArray) - 2;
            // subtract 2 because we add one below
        }
        $move = $movesArray[$i + 1];
        // clear out all of the vars
        $piece = $sqFrom = $sqTo = $mid = $pro = $chk = '';
        if (!isset($move['piece'])) {
            call($move);
        }
        $piece = str_replace('P', '', strtoupper($move['piece']));
        colrow2til($move['fromCol'], $move['fromRow'], $sqFrom);
        colrow2til($move['toCol'], $move['toRow'], $sqTo);
        $mid = isset($move['captSq']) ? 'x' : '-';
        $pro = isset($move['promo']) ? "={$move['promo']}" : '';
        if (isset($move['check'])) {
            if ('check' == $move['check']) {
                $chk = '+';
            } elseif ('mate' == $move['check']) {
                $chk = '#';
            }
        }
        if (isset($move['extra']) && 'ep' != $move['extra']) {
            // if it's a castle move
            $moves[floor($i / 2)][$i % 2] = $move['extra'] . $chk;
        } elseif (isset($move['extra']) && 'ep' == $move['extra']) {
            // if it's an en passant move
            $moves[floor($i / 2)][$i % 2] = $piece . $sqFrom . $mid . $sqTo . 'ep' . $chk;
        } else {
            // if it's a normal move
            $moves[floor($i / 2)][$i % 2] = $piece . $sqFrom . $mid . $sqTo . $pro . $chk;
        }
        // display it
    }
    if (DEBUG && $last) {
        call($moves);
        call(floor($i / 2));
        call($i % 2);
    }
    if ($last) {
        $i--;
        // reset $i from the $i++ in the for loop parameters
        return $moves[floor($i / 2)][$i % 2];
    } else {
        return $moves;
    }
}
Example #2
0
function sqr2til($sqr, &$til)
{
    if (0 > $sqr || 63 < $sqr) {
        die('sqr not in [0-63]: ' . $sqr);
    }
    sqr2colrow($sqr, $col, $row);
    colrow2til($col, $row, $til);
    return $til;
}