.
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see .
// This files plays the game "Crossword".
require( "cross_class.php");
require( "crossdb_class.php");
function game_cross_continue( $id, $game, $attempt, $cross, $g, $endofgame, $context) {
if ($endofgame) {
if ($g == '') {
game_updateattempts( $game, $attempt, -1, true);
$endofgame = false;
}
}
if ($attempt != false and $cross != false) {
return game_cross_play( $id, $game, $attempt, $cross, $g, false, false, $endofgame,
false, false, false, false, true, $context);
}
if ($attempt == false) {
$attempt = game_addattempt( $game);
}
game_cross_new( $game, $attempt->id, $crossm);
game_updateattempts( $game, $attempt, 0, 0);
return game_cross_play( $id, $game, $attempt, $crossm, '', false, false, false, false, false, false, false, true, $context);
}
function game_cross_new( $game, $attemptid, &$crossm) {
global $DB, $USER;
$cross = new CrossDB();
$questions = array();
$infos = array();
$answers = array();
$recs = game_questions_shortanswer( $game);
if ($recs == false) {
print_error( 'game_cross_continue: '.get_string( 'no_words', 'game'));
}
$infos = array();
$reps = array();
foreach ($recs as $rec) {
if ($game->param7 == false) {
if (game_strpos( $rec->answertext, ' ')) {
continue; // Spaces not allowed.
}
}
$rec->answertext = game_upper( $rec->answertext);
$answers[ $rec->answertext] = game_repairquestion( $rec->questiontext);
$infos[ $rec->answertext] = array( $game->sourcemodule, $rec->questionid, $rec->glossaryentryid, $rec->attachment);
$a = array( 'gameid' => $game->id, 'userid' => $USER->id,
'questionid' => $rec->questionid, 'glossaryentryid' => $rec->glossaryentryid);
if (($rec2 = $DB->get_record('game_repetitions', $a, 'id,repetitions AS r')) != false) {
$reps[ $rec->answertext] = $rec2->r;
}
}
$cross->setwords( $answers, $game->param1, $reps);
// The game->param4 is minimum words in crossword.
// The game->param2 is maximum words in crossword.
if ($cross->computedata( $crossm, $crossd, $lettets, $game->param4, $game->param2)) {
$newcrossd = array();
foreach ($crossd as $rec) {
$info = $infos[ $rec->answertext];
if ($info != false) {
$rec->sourcemodule = $info[ 0];
$rec->questionid = $info[ 1];
$rec->glossaryentryid = $info[ 2];
$rec->attachment = $info[ 3];
}
$newcrossd[] = $rec;
}
$cross->savecross( $game, $crossm, $newcrossd, $attemptid);
}
if (count( $crossd) == 0) {
print_error( 'game_cross_continue: '.get_string( 'no_words', 'game'));
}
}
function showlegend( $legend, $title) {
if (count( $legend) == 0) {
return;
}
echo "$title ";
foreach ($legend as $key => $line) {
$line = game_repairquestion( $line);
echo game_filtertext( "$key: $line ", 0);
}
}
function game_cross_play( $id, $game, $attempt, $crossrec, $g, $onlyshow, $showsolution,
$endofgame, $print, $checkbutton, $showhtmlsolutions, $showhtmlprintbutton, $showstudentguess, $context) {
global $CFG, $DB;
$cross = new CrossDB();
$language = $attempt->language;
$info = $cross->loadcross( $g, $done, $html, $game, $attempt, $crossrec, $onlyshow,
$showsolution, $endofgame, $showhtmlsolutions, $attempt->language,
$showstudentguess, $context);
if ($language != $attempt->language) {
if (!$DB->set_field( 'game_attempts', 'language', $attempt->language, array( 'id' => $attempt->id))) {
print_error( "game_cross_play: Can't set language");
}
}
if ($done or $endofgame) {
if (! $cm = $DB->get_record( 'course_modules', array( 'id' => $id))) {
print_error("Course Module ID was incorrect id=$id");
}
if ($endofgame == false) {
echo ''.get_string( 'win', 'game').' ';
}
if (game_can_start_new_attempt( $game)) {
echo ' ';
echo "wwwroot}/mod/game/attempt.php?id=$id&forcenew=1\">".
get_string( 'nextgame', 'game').' ';
}
} else if ($info != '') {
echo " $info ";
}
if ($attempt->language != '') {
$wordrtl = game_right_to_left( $attempt->language);
} else {
$wordrtl = right_to_left();
}
$reverseprint = ($wordrtl != right_to_left());
if ($reverseprint) {
$textdir = 'dir="'.($wordrtl ? 'rtl' : 'ltr').'"';
} else {
$textdir = '';
}
?>
';
} else {
echo '
';
}
if ($game->toptext != '') {
echo $game->toptext.' ';
}
?>
This interactive crossword puzzle requires JavaScript and a reasonably recent web browser, such as Internet Explorer 5.5
or later, Netscape 7, Mozilla, Firefox, or Safari. If you have disabled web page scripting, please re-enable it and refresh
the page.
param3 == 2) {
echo "\r\n";
game_cross_show_welcome( $game);
echo " \r\n";
echo "  \r\n";
}
?>
param3 == 2) {
echo '      ';
game_cross_show_legends( $cross);
} else {
game_cross_show_welcome( $game);
}
?>
';
echo ''.
get_string( 'cross_checkbutton', 'game');
echo ' ';
echo ' '.
get_string( 'cross_endofgamebutton', 'game');
echo ' ';
if ($game->param5 == 1 or $game->param5 == null) {
echo ' '.get_string( 'print', 'game');
echo ' ';
}
echo "\r\n";
}
if ($showhtmlsolutions or $showhtmlprintbutton) {
echo ' ';
}
if ($showhtmlsolutions) {
echo ''.get_string( 'cross_checkbutton', 'game');
echo ' ';
}
if ($showhtmlprintbutton) {
if ($showhtmlsolutions) {
echo " ";
}
echo ''.get_string( 'print', 'game');
echo ' ';
}
if ($game->param3 == 2) {
echo '      ';
game_cross_show_welcome( $game);
} else {
game_cross_show_legends( $cross);
}
if ($game->bottomtext != '') {
echo ' '.$game->bottomtext;
}
if ($attempt != false) {
if ($attempt->timefinish == 0 and $endofgame == 0) {
?>
param3 <> 2) {
game_cross_show_welcome0( $game);
} else {
game_cross_show_welcome1();
}
}
function game_cross_show_welcome0( $game) {
?>
param6 == 0) {
echo 'text-transform:uppercase;';
}
echo '"';
?>
onkeypress="WordEntryKeyPress(event)" onchange="WordEntryKeyPress(event)" autocomplete="off">
param3 == 2) {
game_cross_show_welcome( $game);
}
?>
 
';
ShowLegend( $cross->mlegendh, get_string( 'cross_across', 'game'));
ShowLegend( $cross->mlegendv, get_string( 'cross_down', 'game'));
echo '';
}