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; } }
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; }