.
require( "../../../config.php");
require_once("class.Sudoku.php");
require( '../header.php');
$action = optional_param('action', PARAM_ALPHA); // The action.
if ($action == 'create') {
AppendSudokuB();
} else {
showform();
}
function showform() {
$id = required_param('id', PARAM_NUMBER); // The action.
?>
data = packsudoku( $si, $sp);
if (strlen( $newrec->data) != 81) {
return 0;
}
$newrec->level = $level;
$newrec->opened = GetOpened( $si);
$DB->insert_record( 'game_sudoku_database', $newrec, true);
$level++;
if ($level > $level2) {
$level = $level1;
}
echo get_string( 'sudoku_creating', 'game', $i)."
\r\n";
}
}
function packsudoku( $si, $sp) {
$data = '';
for ($i = 1; $i <= 9; $i++) {
for ($j = 1; $j <= 9; $j++) {
$c = &$sp->thesquares[$i];
$c = &$c->getcell($j);
$solution = $c->asstring( false);
$c = &$si->thesquares[$i];
$c = &$c->getCell($j);
$thesolvedstate = $c->solvedstate();
if ($thesolvedstate == 1) {
// Hint.
$solution = substr( 'ABCDEFGHI', $c->asString( false) - 1, 1);
}
$data .= $solution;
}
}
return $data;
}
function create( &$si, &$sp, $level=1) {
for ($i = 1; $i <= 40; $i++) {
$sp = new sudoku();
$theinitialposition = $sp->generatepuzzle( 10, 50, $level);
if (count( $theinitialposition)) {
break;
}
}
if ($i > 40) {
return false;
}
$si = new sudoku();
$si->initializepuzzlefromarray( $theinitialposition);
return true;
}
function getopened( $si) {
$count = 0;
for ($i = 1; $i <= 9; $i++) {
for ($j = 1; $j <= 9; $j++) {
$c = &$si->thesquares[$i];
$c = &$c->getcell($j);
$thesolvedstate = $c->solvedstate();
if ($thesolvedstate == 1) {
// Hint.
$count++;
}
}
}
return $count;
}