|
|
@ -1,12 +1,27 @@ |
|
|
|
<?php // $Id: play.php,v 1.23 2012/08/15 14:38:06 bdaloukas Exp $
|
|
|
|
|
|
|
|
// This files plays the game "Crossword" |
|
|
|
<?php |
|
|
|
// This file is part of Moodle - http://moodle.org/ |
|
|
|
// |
|
|
|
// Moodle is free software: you can redistribute it and/or modify |
|
|
|
// it under the terms of the GNU General Public License as published by |
|
|
|
// the Free Software Foundation, either version 3 of the License, or |
|
|
|
// (at your option) any later version. |
|
|
|
// |
|
|
|
// Moodle is distributed in the hope that it will be useful, |
|
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
|
|
// GNU General Public License for more details. |
|
|
|
// |
|
|
|
// You should have received a copy of the GNU General Public License |
|
|
|
// along with Moodle. If not, see <http://www.gnu.org/licenses/>. |
|
|
|
// You should have received a copy of the GNU General Public License |
|
|
|
// along with Moodle. If not, see <http://www.gnu.org/licenses/>. |
|
|
|
|
|
|
|
// 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) |
|
|
|
{ |
|
|
|
function game_cross_continue( $id, $game, $attempt, $cross, $g, $endofgame, $context) { |
|
|
|
if ($endofgame) { |
|
|
|
if ($g == '') { |
|
|
|
game_updateattempts( $game, $attempt, -1, true); |
|
|
@ -15,7 +30,8 @@ function game_cross_continue( $id, $game, $attempt, $cross, $g, $endofgame, $con |
|
|
|
} |
|
|
|
|
|
|
|
if ($attempt != false and $cross != false) { |
|
|
|
return game_cross_play( $id, $game, $attempt, $cross, $g, false, false, $endofgame, false, false, false, false, true, $context); |
|
|
|
return game_cross_play( $id, $game, $attempt, $cross, $g, false, false, $endofgame, |
|
|
|
false, false, false, false, true, $context); |
|
|
|
} |
|
|
|
|
|
|
|
if ($attempt == false) { |
|
|
@ -27,8 +43,7 @@ function game_cross_continue( $id, $game, $attempt, $cross, $g, $endofgame, $con |
|
|
|
return game_cross_play( $id, $game, $attempt, $crossm, '', false, false, false, false, false, false, false, true, $context); |
|
|
|
} |
|
|
|
|
|
|
|
function game_cross_new( $game, $attemptid, &$crossm) |
|
|
|
{ |
|
|
|
function game_cross_new( $game, $attemptid, &$crossm) { |
|
|
|
global $DB, $USER; |
|
|
|
|
|
|
|
$cross = new CrossDB(); |
|
|
@ -46,7 +61,7 @@ function game_cross_new( $game, $attemptid, &$crossm) |
|
|
|
foreach ($recs as $rec) { |
|
|
|
if ($game->param7 == false) { |
|
|
|
if (game_strpos( $rec->answertext, ' ')) { |
|
|
|
continue; //spaces not allowed |
|
|
|
continue; // Spaces not allowed. |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
@ -54,7 +69,8 @@ function game_cross_new( $game, $attemptid, &$crossm) |
|
|
|
$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); |
|
|
|
$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; |
|
|
|
} |
|
|
@ -62,12 +78,11 @@ function game_cross_new( $game, $attemptid, &$crossm) |
|
|
|
|
|
|
|
$cross->setwords( $answers, $game->param1, $reps); |
|
|
|
|
|
|
|
//game->param4 is minimum words in crossword |
|
|
|
//game->param2 is maximum words in crossword |
|
|
|
// 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)) { |
|
|
|
$new_crossd = array(); |
|
|
|
foreach( $crossd as $rec) |
|
|
|
{ |
|
|
|
$newcrossd = array(); |
|
|
|
foreach ($crossd as $rec) { |
|
|
|
$info = $infos[ $rec->answertext]; |
|
|
|
if ($info != false) { |
|
|
|
$rec->sourcemodule = $info[ 0]; |
|
|
@ -75,9 +90,9 @@ function game_cross_new( $game, $attemptid, &$crossm) |
|
|
|
$rec->glossaryentryid = $info[ 2]; |
|
|
|
$rec->attachment = $info[ 3]; |
|
|
|
} |
|
|
|
$new_crossd[] = $rec; |
|
|
|
$newcrossd[] = $rec; |
|
|
|
} |
|
|
|
$cross->savecross( $game, $crossm, $new_crossd, $attemptid); |
|
|
|
$cross->savecross( $game, $crossm, $newcrossd, $attemptid); |
|
|
|
} |
|
|
|
|
|
|
|
if (count( $crossd) == 0) { |
|
|
@ -85,27 +100,28 @@ function game_cross_new( $game, $attemptid, &$crossm) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
function showlegend( $legend, $title) |
|
|
|
{ |
|
|
|
if( count( $legend) == 0) |
|
|
|
function showlegend( $legend, $title) { |
|
|
|
if (count( $legend) == 0) { |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
echo "<br><b>$title</b><br>"; |
|
|
|
foreach( $legend as $key => $line) |
|
|
|
{ |
|
|
|
foreach ($legend as $key => $line) { |
|
|
|
$line = game_repairquestion( $line); |
|
|
|
echo game_filtertext( "$key: $line<br>", 0); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
function game_cross_play( $id, $game, $attempt, $crossrec, $g, $onlyshow, $showsolution, $endofgame, $print, $checkbutton, $showhtmlsolutions, $showhtmlprintbutton,$showstudentguess, $context) |
|
|
|
{ |
|
|
|
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); |
|
|
|
$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))) { |
|
|
@ -121,24 +137,27 @@ function game_cross_play( $id, $game, $attempt, $crossrec, $g, $onlyshow, $shows |
|
|
|
if ($endofgame == false) { |
|
|
|
echo '<B>'.get_string( 'win', 'game').'</B><BR>'; |
|
|
|
} |
|
|
|
if( game_can_start_new_attempt( $game)) |
|
|
|
{ |
|
|
|
if (game_can_start_new_attempt( $game)) { |
|
|
|
echo '<br>'; |
|
|
|
echo "<a href=\"{$CFG->wwwroot}/mod/game/attempt.php?id=$id&forcenew=1\">".get_string( 'nextgame', 'game').'</a> '; |
|
|
|
echo "<a href=\"{$CFG->wwwroot}/mod/game/attempt.php?id=$id&forcenew=1\">". |
|
|
|
get_string( 'nextgame', 'game').'</a> '; |
|
|
|
} |
|
|
|
} else if ($info != '') { |
|
|
|
echo "<br>$info<br>"; |
|
|
|
} |
|
|
|
|
|
|
|
if( $attempt->language != '') |
|
|
|
if ($attempt->language != '') { |
|
|
|
$wordrtl = game_right_to_left( $attempt->language); |
|
|
|
else |
|
|
|
} else { |
|
|
|
$wordrtl = right_to_left(); |
|
|
|
} |
|
|
|
|
|
|
|
$reverseprint = ($wordrtl != right_to_left()); |
|
|
|
if( $reverseprint) |
|
|
|
if ($reverseprint) { |
|
|
|
$textdir = 'dir="'.($wordrtl ? 'rtl' : 'ltr').'"'; |
|
|
|
else |
|
|
|
} else { |
|
|
|
$textdir = ''; |
|
|
|
} |
|
|
|
|
|
|
|
?> |
|
|
|
<style type="text/css"><!-- |
|
|
@ -267,7 +286,6 @@ if( $print){ |
|
|
|
echo $game->toptext.'<br>'; |
|
|
|
} |
|
|
|
?> |
|
|
|
|
|
|
|
<h1></h1> |
|
|
|
|
|
|
|
<div id="waitmessage" class="answerboxstyle"> |
|
|
@ -289,7 +307,8 @@ if( $print){ |
|
|
|
?> |
|
|
|
|
|
|
|
<tr> |
|
|
|
<td class="crosswordarea"><table id="crossword" cellpadding="3" cellspacing="0" style="display: none; border-collapse: collapse;" <?php echo $textdir;?>> |
|
|
|
<td class="crosswordarea"> |
|
|
|
<table id="crossword" cellpadding="3" cellspacing="0" style="display: none; border-collapse: collapse;" <?php echo $textdir;?>> |
|
|
|
|
|
|
|
<script language="JavaScript" type="text/javascript"><!-- |
|
|
|
|
|
|
@ -316,7 +335,7 @@ if (document.getElementById("waitmessage") != null) |
|
|
|
CurrentWord = -1; |
|
|
|
PrevWordHorizontal = false; |
|
|
|
|
|
|
|
<?PHP |
|
|
|
<?php |
|
|
|
echo $html; |
|
|
|
?> |
|
|
|
|
|
|
@ -419,7 +438,10 @@ if (document.getElementById("waitmessage") != null) |
|
|
|
{ |
|
|
|
if (TableAcrossWord[x][y] >= 0 || TableDownWord[x][y] >= 0) |
|
|
|
{ |
|
|
|
document.write("<td id=\"c" + PadNumber(x) + PadNumber(y) + "\" class=\"gamebox boxnormal_unsel\" onclick=\"SelectThisWord(event);\">"); |
|
|
|
var s; |
|
|
|
s = "<td id=\"c" + PadNumber(x) + PadNumber(y); |
|
|
|
s += "\" class=\"gamebox boxnormal_unsel\" onclick=\"SelectThisWord(event);\">"; |
|
|
|
document.write( s); |
|
|
|
|
|
|
|
if( solu[x][y] != '') |
|
|
|
document.write( solu[x][y]); |
|
|
@ -749,7 +771,6 @@ function CheckServerClick( endofgame) |
|
|
|
} |
|
|
|
?> |
|
|
|
} |
|
|
|
|
|
|
|
<?php |
|
|
|
} |
|
|
|
?> |
|
|
@ -907,9 +928,7 @@ function CheckHtmlClick() |
|
|
|
<?php |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if( $showhtmlsolutions) |
|
|
|
{ |
|
|
|
if ($showhtmlsolutions) { |
|
|
|
?> |
|
|
|
function decodeutf8(utftext) { |
|
|
|
var string = ""; |
|
|
@ -965,13 +984,14 @@ if( $showhtmlsolutions) |
|
|
|
if ($onlyshow == false) { |
|
|
|
echo '<div style="margin-top: 1em;">'; |
|
|
|
|
|
|
|
echo '<button id="checkbutton" type="button" onclick="CheckServerClick( 0);" style="display: none;">'.get_string( 'cross_checkbutton', 'game'); |
|
|
|
echo '<button id="checkbutton" type="button" onclick="CheckServerClick( 0);" style="display: none;">'. |
|
|
|
get_string( 'cross_checkbutton', 'game'); |
|
|
|
echo '</button>'; |
|
|
|
|
|
|
|
echo ' <button id="finishattemptbutton" type="button" onclick="CheckServerClick( 1);" style="display: none;">'.get_string( 'cross_endofgamebutton', 'game'); |
|
|
|
echo ' <button id="finishattemptbutton" type="button" onclick="CheckServerClick( 1);" style="display: none;">'. |
|
|
|
get_string( 'cross_endofgamebutton', 'game'); |
|
|
|
echo '</button>'; |
|
|
|
if( $game->param5 == 1 or $game->param5 == NULL) |
|
|
|
{ |
|
|
|
if ($game->param5 == 1 or $game->param5 == NULL) { |
|
|
|
echo ' <button id="printbutton" type="button" onclick="OnPrint( 0);" style="display: none;">'.get_string( 'print', 'game'); |
|
|
|
echo '</button>'; |
|
|
|
} |
|
|
@ -1007,12 +1027,9 @@ if( $showhtmlsolutions) |
|
|
|
echo '<br><br>'.$game->bottomtext; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if ($attempt != false) { |
|
|
|
if( $attempt->timefinish == 0 and $endofgame == 0) |
|
|
|
{ |
|
|
|
if ($attempt->timefinish == 0 and $endofgame == 0) { |
|
|
|
?> |
|
|
|
|
|
|
|
<script language="JavaScript" type="text/javascript"><!-- |
|
|
|
if (Initialized) |
|
|
|
{ |
|
|
@ -1021,8 +1038,7 @@ if( $attempt != false){ |
|
|
|
echo "document.getElementById(\"welcomemessage\").style.display = \"\";"; |
|
|
|
} |
|
|
|
|
|
|
|
if( $showsolution == false) |
|
|
|
{ |
|
|
|
if ($showsolution == false) { |
|
|
|
?> |
|
|
|
document.getElementById("checkbutton").style.display = ""; |
|
|
|
document.getElementById("finishattemptbutton").style.display = ""; |
|
|
@ -1051,7 +1067,6 @@ function game_cross_show_welcome( $game){ |
|
|
|
} else { |
|
|
|
game_cross_show_welcome1(); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
function game_cross_show_welcome0( $game) { |
|
|
|