Browse Source

Fix:Coding style

MOODLE_20_STABLE
Vasilis Daloukas 9 years ago
parent
commit
f28cb9eb36
  1. 83
      cryptex/cryptexdb_class.php
  2. 132
      cryptex/play.php
  3. 24
      db/access.php
  4. 15
      db/createsnakes.php
  5. 24
      db/importsnakes.php
  6. 5392
      db/importsudoku.php
  7. 129
      db/upgrade.php
  8. 234
      hangman/play.php
  9. 78
      hiddenpicture/picture.php
  10. 146
      hiddenpicture/play.php
  11. 12
      lib.php

83
cryptex/cryptexdb_class.php

@ -1,9 +1,21 @@
<?PHP
class CryptexDB extends CrossDB
{
function savecryptex( $game, &$crossm, $crossd, $id, $letters)
{
<?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/>.
class CryptexDB extends CrossDB {
public function savecryptex( $game, &$crossm, $crossd, $id, $letters) {
global $USER;
CrossDB::delete_records( $id);
@ -25,9 +37,7 @@ class CryptexDB extends CrossDB
return $newrec;
}
function computeletters( $crossm, $crossd)
{
public function computeletters( $crossm, $crossd) {
$letters = '';
$cols = $crossm->cols + 1;
$letters = str_repeat('.', $crossm->cols).'#';
@ -35,8 +45,7 @@ class CryptexDB extends CrossDB
$freqs1 = array();
$count1 = $count2 = 0;
foreach( $crossd as $rec)
{
foreach ($crossd as $rec) {
$pos = $rec->col - 1 + ($rec->row - 1) * $cols;
$s = $rec->answertext;
$len = game_strlen( $s);
@ -66,34 +75,29 @@ class CryptexDB extends CrossDB
}
$step = 1;
while( $spaces)
{
while ($spaces) {
if ($step == 1) {
$step = 2;
$i = array_rand( $freqs1);
$this->insertchar( $letters, $crossm->cols, $crossm->rows, $freqs1[ $i], $spaces);
}else
{
} else {
$step = 1;
$i = array_rand( $freqs2);
$this->insertchars( $letters, $crossm->cols, $crossm->rows, $freqs2[ $i], $spaces);
}
}
$ret_letters = "";
$retletters = "";
for ($row = 0; $row < $crossm->rows; $row++) {
$ret_letters .= game_substr( $letters, $cols * $row, ($cols-1));
$retletters .= game_substr( $letters, $cols * $row, ($cols - 1));
}
return $ret_letters;
return $retletters;
}
function displaycryptex( $cols, $rows, $letters, $mask, $showsolution, $textdir)
{
public function displaycryptex( $cols, $rows, $letters, $mask, $showsolution, $textdir) {
echo "<table border=1 $textdir>";
for( $row=0; $row < $rows; $row++)
{
for ($row = 0; $row < $rows; $row++) {
echo "<tr>";
for ($col = 0; $col < $cols; $col++) {
$pos = $cols * $row + $col;
@ -104,8 +108,7 @@ class CryptexDB extends CrossDB
echo "<td align=center><b><FONT color=red>".$c."</font></td>";
} else if ( $m == '1') {
echo "<td align=center><b><FONT color=red>".$c."</font></td>";
}else
{
} else {
echo "<td align=center>".$c."</td>";
}
}
@ -114,8 +117,7 @@ class CryptexDB extends CrossDB
echo "</table>";
}
function insertchar( &$letters, $cols, $rows, $char, &$spaces)
{
public function insertchar( &$letters, $cols, $rows, $char, &$spaces) {
$len = game_strlen( $letters);
for ($i = 0; $i < $len; $i++) {
if (game_substr( $letters, $i, 1) == '.') {
@ -126,8 +128,7 @@ class CryptexDB extends CrossDB
}
}
function insertchars( &$letters, $cols, $rows, $char, &$spaces)
{
public function insertchars( &$letters, $cols, $rows, $char, &$spaces) {
$len = game_strlen( $letters);
for ($i = 0; $i < $len; $i++) {
if (game_substr( $letters, $i, 1) == '.' and game_substr( $letters, $i + 1, 1) == '.' ) {
@ -147,8 +148,7 @@ class CryptexDB extends CrossDB
return false;
}
function gethash( $word)
{
public function gethash( $word) {
$x = 37;
$len = count( game_strlen( $word));
@ -159,8 +159,7 @@ class CryptexDB extends CrossDB
return $x;
}
function loadcryptex( $crossm, &$mask, &$corrects, &$language)
{
public function loadcryptex( $crossm, &$mask, &$corrects, &$language) {
global $DB;
$questions = array();
@ -168,10 +167,8 @@ class CryptexDB extends CrossDB
$mask = str_repeat( '0', $crossm->cols * $crossm->rows);
if ($recs = $DB->get_records( 'game_queries', array( 'attemptid' => $crossm->id)))
{
foreach ($recs as $rec)
{
if ($recs = $DB->get_records( 'game_queries', array( 'attemptid' => $crossm->id))) {
foreach ($recs as $rec) {
if ($rec->questiontext == '') {
$rec->questiontext = ' ';
}
@ -183,8 +180,7 @@ class CryptexDB extends CrossDB
$len = game_strlen( $word);
$found = ($rec->answertext == $rec->studentanswer);
for( $i=0; $i < $len; $i++)
{
for ($i = 0; $i < $len; $i++) {
$c = ( $found ? '1' : '2');
if (game_substr( $mask, $pos, 1) != '1') {
@ -208,14 +204,11 @@ class CryptexDB extends CrossDB
return $questions;
}
function setwords( $answers, $maxcols, $reps)
{
public function setwords( $answers, $maxcols, $reps) {
return Cross::setwords( $answers, $maxcols, $reps);
}
function computedata( &$crossm, &$crossd, &$letters, $minwords, $maxwords)
{
public function computedata( &$crossm, &$crossd, &$letters, $minwords, $maxwords) {
if (!cross::computedata( $crossm, $crossd, $letters, $minwords, $maxwords)) {
return false;
}
@ -225,5 +218,3 @@ class CryptexDB extends CrossDB
return true;
}
}

132
cryptex/play.php

@ -1,4 +1,19 @@
<?php // $Id: play.php,v 1.20 2012/08/03 05:52:50 bdaloukas Exp $
<?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/>.
/**
* This page plays the cryptex game
*
@ -9,8 +24,7 @@
require_once( "cryptexdb_class.php");
function game_cryptex_continue( $id, $game, $attempt, $cryptexrec, $endofgame, $context)
{
function game_cryptex_continue( $id, $game, $attempt, $cryptexrec, $endofgame, $context) {
global $DB, $USER;
if ($endofgame) {
@ -18,7 +32,7 @@ function game_cryptex_continue( $id, $game, $attempt, $cryptexrec, $endofgame, $
$endofgame = false;
}
if( $attempt != false and $cryptexrec != false){
if $attempt != false and $cryptexrec != false) {
$crossm = $DB->get_record( 'game_cross', array( 'id' => $attempt->id));
return game_cryptex_play( $id, $game, $attempt, $cryptexrec, $crossm, false, false, false, $context);
}
@ -43,7 +57,7 @@ function game_cryptex_continue( $id, $game, $attempt, $cryptexrec, $endofgame, $
foreach ($recs as $rec) {
if ($game->param7 == false) {
if (game_strpos( $rec->answertext, ' ')) {
continue; //spaces not allowed
continue; // Spaces not allowed.
}
}
@ -51,7 +65,8 @@ function game_cryptex_continue( $id, $game, $attempt, $cryptexrec, $endofgame, $
$answers[ $rec->answertext] = game_repairquestion( $rec->questiontext);
$infos[ $rec->answertext] = array( $game->sourcemodule, $rec->questionid, $rec->glossaryentryid);
$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;
}
@ -59,12 +74,11 @@ function game_cryptex_continue( $id, $game, $attempt, $cryptexrec, $endofgame, $
$cryptex->setwords( $answers, $game->param1, $reps);
//game->param4 is minimum words
//game->param2 is maximum words
// The game->param4 is minimum words.
// The game->param2 is maximum words.
if ($cryptex->computedata( $crossm, $crossd, $letters, $game->param4, $game->param2)) {
$new_crossd = array();
foreach( $crossd as $rec)
{
$newcrossd = array();
foreach ($crossd as $rec) {
if (array_key_exists( $rec->answertext, $infos)) {
$info = $infos[ $rec->answertext];
@ -74,9 +88,9 @@ function game_cryptex_continue( $id, $game, $attempt, $cryptexrec, $endofgame, $
$rec->glossaryentryid = $info[ 2];
}
game_update_queries( $game, $attempt, $rec, 0, '');
$new_crossd[] = $rec;
$newcrossd[] = $rec;
}
$cryptexrec = $cryptex->savecryptex( $game, $crossm, $new_crossd, $attempt->id, $letters);
$cryptexrec = $cryptex->savecryptex( $game, $crossm, $newcrossd, $attempt->id, $letters);
}
game_updateattempts( $game, $attempt, 0, 0);
@ -84,21 +98,17 @@ function game_cryptex_continue( $id, $game, $attempt, $cryptexrec, $endofgame, $
return game_cryptex_play( $id, $game, $attempt, $cryptexrec, $crossm, false, false, false, $context);
}
//q means game_queries.id
function game_cryptex_check( $id, $game, $attempt, $cryptexrec, $q, $answer, $finishattempt, $context)
{
// The q means game_queries.id.
function game_cryptex_check( $id, $game, $attempt, $cryptexrec, $q, $answer, $finishattempt, $context) {
global $DB;
if( $finishattempt)
{
if ($finishattempt) {
game_updateattempts( $game, $attempt, -1, true);
game_cryptex_continue( $id, $game, false, false, true, $context);
return;
}
if( $attempt === false)
{
if ($attempt === false) {
game_cryptex_continue( $id, $game, $attempt, $cryptexrec, false, $context);
return;
}
@ -113,17 +123,14 @@ function game_cryptex_check( $id, $game, $attempt, $cryptexrec, $q, $answer, $fi
$len2 = game_strlen( $answer2);
$equal = ( $len1 == $len2);
if ($equal) {
for( $i=0; $i < $len1; $i++)
{
if( game_substr( $answer1, $i, 1) != game_substr( $answer2, $i, 1))
{
for ($i = 0; $i < $len1; $i++) {
if (game_substr( $answer1, $i, 1) != game_substr( $answer2, $i, 1)) {
$equal = true;
break;
}
}
}
if( $equal == false)
{
if ($equal == false) {
game_update_queries( $game, $attempt, $query, 0, $answer2, true);
game_cryptex_play( $id, $game, $attempt, $cryptexrec, $crossm, true, false, false, $context);
return;
@ -136,11 +143,10 @@ function game_cryptex_check( $id, $game, $attempt, $cryptexrec, $q, $answer, $fi
game_cryptex_play( $id, $game, $attempt, $cryptexrec, $crossm, true, $onlyshow, $showsolution, $context);
}
function game_cryptex_play( $id, $game, $attempt, $cryptexrec, $crossm, $updateattempt=false, $onlyshow=false, $showsolution=false, $context, $print=false, $showhtmlprintbutton=true)
{
global $DB;
global $CFG;
function game_cryptex_play( $id, $game, $attempt, $cryptexrec, $crossm,
$updateattempt = false, $onlyshow = false, $showsolution = false, $context,
$print = false, $showhtmlprintbutton = true) {
global $CFG, $DB;
if ($game->toptext != '') {
echo $game->toptext.'<br>';
@ -158,49 +164,48 @@ function game_cryptex_play( $id, $game, $attempt, $cryptexrec, $crossm, $updatea
}
}
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 = '';
}
$len = game_strlen( $mask);
//count1 means there is a guested letter
//count2 means there is a letter that not guessed
// The count1 means there is a guested letter.
// The count2 means there is a letter that not guessed.
$count1 = $count2 = 0;
for($i=0; $i < $len; $i++)
{
for ($i = 0; $i < $len; $i++) {
$c = game_substr( $mask, $i, 1);
if ($c == '1') {
$count1++;
}else if( $c == '2')
{
} else if ($c == '2') {
$count2++;
}
}
if ($count1 + $count2 == 0) {
$gradeattempt = 0;
}else
{
} else {
$gradeattempt = $count1 / ($count1 + $count2);
}
$finished = ($count2 == 0);
if( ($finished === false) && ($game->param8 > 0))
{
if (($finished === false) && ($game->param8 > 0)) {
$found = false;
foreach ( $questions as $q)
{
if ( $q->tries < $game->param8)
foreach ($questions as $q) {
if ($q->tries < $game->param8) {
$found = true;
}
if( $found == false)
$finished = true; //rich max tries
}
if ($found == false) {
$finished = true; // Rich max tries.
}
}
if ($updateattempt) {
@ -212,7 +217,6 @@ function game_cryptex_play( $id, $game, $attempt, $cryptexrec, $crossm, $updatea
game_cryptex_onfinished( $id, $game, $attempt, $cryptexrec);
}
}
?>
<style type="text/css"><!--
@ -287,6 +291,7 @@ if( $showhtmlprintbutton){
{
<?php
global $CFG;
$params = "id=$id&gameid=$game->id";
echo "window.open( \"{$CFG->wwwroot}/mod/game/print.php?$params\");";
?>
@ -296,6 +301,7 @@ if( $showhtmlprintbutton){
{
<?php
global $CFG;
$params = 'id='.$id.'&action=cryptexcheck&g=&finishattempt=1';
echo "window.location = \"{$CFG->wwwroot}/mod/game/attempt.php?$params\";\r\n";
?>
@ -317,11 +323,13 @@ if( $showhtmlprintbutton){
}
$question = game_show_query( $game, $q, "$i. ".$q->questiontext, $context);
$question2 = strip_tags($question); //ADDED BY DP (AUG 2009) - fixes " breaking the Answer button for this question
$question2 = strip_tags($question); // ADDED BY DP (AUG 2009) - fixes " breaking the Answer button for this question.
if (($onlyshow == false) and ($showsolution == false)) {
if( ($game->param8 == 0) || ($game->param8 > $q->tries))
$question .= ' &nbsp;<input type="submit" value="'.get_string( 'answer').'" onclick="OnCheck( '.$q->id.',\''.$question2.'\');" />';
if (($game->param8 == 0) || ($game->param8 > $q->tries)) {
$question .= ' &nbsp;<input type="submit" value="'.
get_string( 'answer').'" onclick="OnCheck( '.$q->id.',\''.$question2.'\');" />';
}
}
echo $question;
@ -356,24 +364,24 @@ if( $showhtmlprintbutton){
</script>
<?php
if( $print)
if ($print) {
echo '<body onload="window.print()">';
else
} else {
echo '<body>';
}
}
function game_cryptex_onfinished( $id, $game, $attempt, $cryptexrec)
{
function game_cryptex_onfinished( $id, $game, $attempt, $cryptexrec) {
global $CFG, $DB;
if (! $cm = $DB->get_record( 'course_modules', array( 'id' => $id))) {
print_error( "Course Module ID was incorrect id=$id");
}
echo '<B>'.get_string( 'win', 'game').'</B><BR>';
echo '<B>'.get_string( 'win', 'game').'</B><br>';
echo '<br>';
echo "<a href=\"{$CFG->wwwroot}/mod/game/attempt.php?id=$id&forcenew=1\">".get_string( 'nextgame', 'game').'</a> &nbsp; &nbsp; &nbsp; &nbsp; ';
echo "<a href=\"{$CFG->wwwroot}/mod/game/attempt.php?id=$id&forcenew=1\">".
get_string( 'nextgame', 'game').'</a> &nbsp; &nbsp; &nbsp; &nbsp; ';
echo "<a href=\"{$CFG->wwwroot}/course/view.php?id=$cm->course\">".get_string( 'finish', 'game').'</a> ';
echo "<br><br>\r\n";
}

24
db/access.php

@ -1,4 +1,19 @@
<?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/>.
/**
* Capability definitions for the game module.
*
@ -6,8 +21,7 @@
*/
$capabilities = array(
// Ability to see that the game exists, and the basic information
// about it, for example the start date and time limit.
// Ability to see that the game exists, and the basic information about it, for example the start date and time limit.
'mod/game:view' => array(
'captype' => 'read',
'contextlevel' => CONTEXT_MODULE,
@ -31,8 +45,7 @@ $capabilities = array(
)
),
// Ability for a 'Student' to review their previous attempts. Review by
// 'Teachers' is controlled by mod/game:viewreports.
// Ability for a 'Student' to review their previous attempts. Review by 'Teachers' is controlled by mod/game:viewreports.
'mod/game:reviewmyattempts' => array(
'captype' => 'read',
'contextlevel' => CONTEXT_MODULE,
@ -53,7 +66,7 @@ $capabilities = array(
)
),
// Edit the game overrides
// Edit the game overrides.
'mod/game:manageoverrides' => array(
'captype' => 'write',
'contextlevel' => CONTEXT_MODULE,
@ -98,4 +111,3 @@ $capabilities = array(
'clonepermissionsfrom' => 'moodle/course:manageactivities'
)
);

15
db/createsnakes.php

@ -1,8 +1,21 @@
<?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/>.
require( "../../../config.php");
execute_sql("truncate TABLE {game_snakes_database}");
require( "importsnakes.php");

24
db/importsnakes.php

@ -1,9 +1,22 @@
<?php // $Id: importsnakes.php,v 1.5 2012/07/25 11:16:05 bdaloukas Exp $
<?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/>.
game_importsnakes();
function game_importsnakes()
{
function game_importsnakes() {
global $DB;
if ($DB->count_records( 'game_snakes_database') != 0) {
@ -41,13 +54,10 @@ function game_importsnakes()
game_importsnakes_do( $newrec);
}
function game_importsnakes_do( $newrec)
{
function game_importsnakes_do( $newrec) {
global $DB;
if (!$DB->insert_record( 'game_snakes_database', $newrec)) {
print_object( $newrec);
print_error( "Can't insert to table game_snakes_database");
}
}

5392
db/importsudoku.php

File diff suppressed because it is too large

129
db/upgrade.php

@ -1,23 +1,37 @@
<?php //$Id: upgrade.php,v 1.30 2011/08/27 05:37:44 bdaloukas Exp $
// This file keeps track of upgrades to the game module
//
// Sometimes, changes between versions involve
// alterations to database structures and other
// major things that may break installations.
<?php
// This file is part of Moodle - http://moodle.org/
//
// The upgrade function in this file will attempt
// to perform all the necessary actions to upgrade
// your older installation to the current version.
// 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.
//
// If there's something it cannot do itself, it
// will tell you what you need to do.
// 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.
//
// The commands in here will all be database-neutral,
// using the methods of database_manager class
//
// Please do not forget to use upgrade_set_timeout()
// before any action that may take longer time to finish.
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/* This file keeps track of upgrades to the game module
* Sometimes, changes between versions involve
* alterations to database structures and other
* major things that may break installations.
*
* The upgrade function in this file will attempt
* to perform all the necessary actions to upgrade
* your older installation to the current version.
*
* If there's something it cannot do itself, it
* will tell you what you need to do.
*
* The commands in here will all be database-neutral,
* using the methods of database_manager class
*
* Please do not forget to use upgrade_set_timeout()
* before any action that may take longer time to finish.
*/
function xmldb_game_upgrade($oldversion) {
@ -27,7 +41,8 @@ function xmldb_game_upgrade($oldversion) {
if ($oldversion < 2007082802) {
$table = new xmldb_table('game');
$field = new xmldb_field('questioncategoryid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, '0', 'glossarycategoryid');
$field = new xmldb_field('questioncategoryid', XMLDB_TYPE_INTEGER, '10',
XMLDB_UNSIGNED, XMLDB_NOTNULL, null, '0', 'glossarycategoryid');
if (!$dbman->field_exists($table, $field)) {
$dbman->add_field($table, $field);
}
@ -43,19 +58,22 @@ function xmldb_game_upgrade($oldversion) {
if ($oldversion < 2007082803) {
$table = new xmldb_table('game_hangman');
$field = new xmldb_field('glossaryid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, '0', 'quizid');
$field = new xmldb_field('glossaryid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED,
null, null, '0', 'quizid');
if (!$dbman->field_exists($table, $field)) {
$dbman->add_field($table, $field);
}
$table = new xmldb_table('game_hangman');
$field = new xmldb_field('glossarycategoryid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, '0', 'glossaryid');
$field = new xmldb_field('glossarycategoryid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED,
null, null, '0', 'glossaryid');
if (!$dbman->field_exists($table, $field)) {
$dbman->add_field($table, $field);
}
$table = new xmldb_table('game_hangman');
$field = new xmldb_field('questioncategoryid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, '0', 'glossarycategoryid');
$field = new xmldb_field('questioncategoryid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED,
null, null, '0', 'glossarycategoryid');
if (!$dbman->field_exists($table, $field)) {
$dbman->add_field($table, $field);
}
@ -65,7 +83,8 @@ function xmldb_game_upgrade($oldversion) {
if ($oldversion < 2007082804) {
$table = new xmldb_table('game_millionaire');
$field = new xmldb_field('questioncategoryid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, '0', 'quizid');
$field = new xmldb_field('questioncategoryid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED,
null, null, '0', 'quizid');
if (!$dbman->field_exists($table, $field)) {
$dbman->add_field($table, $field);
}
@ -75,7 +94,8 @@ function xmldb_game_upgrade($oldversion) {
if ($oldversion < 2007082805) {
$table = new xmldb_table('game_hangman');
$field = new xmldb_field('try', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, '0', 'answer');
$field = new xmldb_field('try', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED,
null, null, '0', 'answer');
if (!$dbman->field_exists($table, $field)) {
$dbman->add_field($table, $field);
}
@ -98,7 +118,8 @@ function xmldb_game_upgrade($oldversion) {
}
$table = new xmldb_table('game_hangman');
$field = new xmldb_field('corrects', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, '0', 'finishedword');
$field = new xmldb_field('corrects', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED,
null, null, '0', 'finishedword');
if (!$dbman->field_exists($table, $field)) {
$dbman->add_field($table, $field);
}
@ -108,7 +129,8 @@ function xmldb_game_upgrade($oldversion) {
if ($oldversion < 2007082808) {
$table = new xmldb_table('game');
$field = new xmldb_field('param7', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, '0', 'param6');
$field = new xmldb_field('param7', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED,
null, null, '0', 'param6');
if (!$dbman->field_exists($table, $field)) {
$dbman->add_field($table, $field);
}
@ -116,7 +138,6 @@ function xmldb_game_upgrade($oldversion) {
upgrade_mod_savepoint(true, 2007082808, 'game');
}
if ($oldversion < 2007082809) {
$table = new xmldb_table('game_hangman');
$field = new xmldb_field('letters', XMLDB_TYPE_CHAR, '30');
@ -129,7 +150,8 @@ function xmldb_game_upgrade($oldversion) {
if ($oldversion < 2007082901) {
$table = new xmldb_table('game_hangman');
$field = new xmldb_field('glossaryid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, '0', 'quizid');
$field = new xmldb_field('glossaryid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED,
null, null, '0', 'quizid');
if (!$dbman->field_exists($table, $field)) {
$dbman->add_field($table, $field);
}
@ -161,7 +183,8 @@ function xmldb_game_upgrade($oldversion) {
$table = new xmldb_table( 'game_bookquiz_chapters');
$table->add_field('id', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, XMLDB_SEQUENCE);
$table->add_field('gameinstanceid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, '0');
$table->add_field('gameinstanceid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED,
XMLDB_NOTNULL, null, '0');
$table->add_field('chapterid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, '0');
$table->add_key('PRIMARY', XMLDB_KEY_PRIMARY, array('id'));
@ -223,7 +246,8 @@ function xmldb_game_upgrade($oldversion) {
if ($oldversion < 2007092302) {
$table = new xmldb_table('game_snakes_database');
$field = new xmldb_field('height', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, '0');
$field = new xmldb_field('height', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED,
null, null, '0');
if (!$dbman->field_exists($table, $field)) {
$dbman->add_field($table, $field);
}
@ -308,10 +332,10 @@ function xmldb_game_upgrade($oldversion) {
if ($dbman->field_exists($table, $field)) {
$dbman->drop_field($table, $field);
}
upgrade_mod_savepoint(true, 2007110801, 'game');
}
if ($oldversion < 2007110802) {
$table = new xmldb_table( 'game_grades');
@ -594,7 +618,6 @@ function xmldb_game_upgrade($oldversion) {
$dbman->drop_table($table);
}
upgrade_mod_savepoint(true, 2007110840, 'game');
}
if ($oldversion < 2007110841) {
@ -725,7 +748,6 @@ function xmldb_game_upgrade($oldversion) {
upgrade_mod_savepoint(true, 2007110865, 'game');
}
if ($oldversion < 2007110866) {
$table = new xmldb_table( 'game_course_input');
@ -1000,7 +1022,7 @@ function xmldb_game_upgrade($oldversion) {
upgrade_mod_savepoint(true, 2007120106, 'game');
}
//2008
// Here starts year 2008.
if ($oldversion < 2008011301) {
$table = new xmldb_table('game');
@ -1235,7 +1257,7 @@ function xmldb_game_upgrade($oldversion) {
upgrade_mod_savepoint(true, 2008111801, 'game');
}
//2009
// Year 2009 starts here.
if ($oldversion < 2009010502) {
$table = new xmldb_table('game_export_javame');
@ -1376,31 +1398,31 @@ function xmldb_game_upgrade($oldversion) {
if ($oldversion < 2010072605) {
// Define field language to be added to game_attempts
// Define field language to be added to game_attempts.
$table = new xmldb_table('game_attempts');
$field = new xmldb_field('language', XMLDB_TYPE_CHAR, '10', null, null, null, null, 'attempts');
// Conditionally launch add field language
// Conditionally launch add field language.
if (!$dbman->field_exists($table, $field)) {
$dbman->add_field($table, $field);
}
// game savepoint reached
// Game savepoint reached.
upgrade_mod_savepoint(true, 2010072605, 'game');
}
if ($oldversion < 2010090301) {
// Define field param9 to be added to game
// Define field param9 to be added to game.
$table = new xmldb_table('game');
$field = new xmldb_field('param9', XMLDB_TYPE_TEXT, 'medium', null, null, null, null, 'param8');
// Conditionally launch add field param9
// Conditionally launch add field param9.
if (!$dbman->field_exists($table, $field)) {
$dbman->add_field($table, $field);
}
// game savepoint reached
// Game savepoint reached.
upgrade_mod_savepoint(true, 2010090301, 'game');
}
@ -1435,66 +1457,65 @@ function xmldb_game_upgrade($oldversion) {
if ($oldversion < 2011072902) {
// Define field param10 to be added to game
// Define field param10 to be added to game.
$table = new xmldb_table('game');
$field = new xmldb_field('param10', XMLDB_TYPE_INTEGER, '10', null, null, null, null, 'param9');
// Conditionally launch add field param10
// Conditionally launch add field param10.
if (!$dbman->field_exists($table, $field)) {
$dbman->add_field($table, $field);
}
// game savepoint reached
// Game savepoint reached.
upgrade_mod_savepoint(true, 2011072902, 'game');
}
if ($oldversion < 2011082603) {
// Define field timeopen to be added to game
// Define field timeopen to be added to game.
$table = new xmldb_table('game');
$field = new xmldb_field('timeopen', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, '0', 'sourcemodule');
// Conditionally launch add field timeopen
// Conditionally launch add field timeopen.
if (!$dbman->field_exists($table, $field)) {
$dbman->add_field($table, $field);
}
// game savepoint reached
// Game savepoint reached.
upgrade_mod_savepoint(true, 2011082603, 'game');
}
if ($oldversion < 2011082604) {
// Define field timeclose to be added to game
// Define field timeclose to be added to game.
$table = new xmldb_table('game');
$field = new xmldb_field('timeclose', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, '0', 'timeopen');
// Conditionally launch add field timeclose
// Conditionally launch add field timeclose.
if (!$dbman->field_exists($table, $field)) {
$dbman->add_field($table, $field);
}
// game savepoint reached
// Game savepoint reached.
upgrade_mod_savepoint(true, 2011082604, 'game');
}
if ($oldversion < 2013072601) {
// Define field timeclose to be added to game
// Define field timeclose to be added to game.
$table = new xmldb_table('game');
$field = new xmldb_field('maxattempts', XMLDB_TYPE_INTEGER, '3', XMLDB_UNSIGNED, null, null, '0', 'subcategories');
// Conditionally launch add field maxattempts
// Conditionally launch add field maxattempts.
if (!$dbman->field_exists($table, $field)) {
$dbman->add_field($table, $field);
}
// game savepoint reached
// Game savepoint reached.
upgrade_mod_savepoint(true, 2013072601, 'game');
}
if( $oldversion < 2015122105)
{
if ($oldversion < 2015122105) {
$table = new xmldb_table('game');
$field = new xmldb_field('userlanguage', XMLDB_TYPE_CHAR, '100');
if (!$dbman->field_exists($table, $field)) {

234
hangman/play.php

@ -1,53 +1,64 @@
<?php // $Id: play.php,v 1.27 2012/07/25 11:16:05 bdaloukas Exp $
// This file plays the game hangman
function game_hangman_continue( $id, $game, $attempt, $hangman, $newletter, $action, $context)
{
<?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/>.
// This file plays the game hangman.
function game_hangman_continue( $id, $game, $attempt, $hangman, $newletter, $action, $context) {
global $DB, $USER;
if ($attempt != false and $hangman != false) {
if (($action == 'nextword') and ($hangman->finishedword != 0)) {
//finish with one word and continue to another
// Finish with one word and continue to another.
if (!$DB->set_field( 'game_hangman', 'finishedword', 0, array( 'id' => $hangman->id))) {
error( "game_hangman_continue: Can't update game_hangman");
}
}else
{
} else {
return game_hangman_play( $id, $game, $attempt, $hangman, false, false, $context);
}
}
$updatehangman = (($attempt != false) and ($hangman != false));
//new game
// New game.
srand ((double)microtime() * 1000003);
//I try 10 times to find a new question
// I try 10 times to find a new question.
$found = false;
$min_num = 0;
$minnum = 0;
$unchanged = 0;
for($i=1; $i <= 10; $i++)
{
for ($i = 1; $i <= 10; $i++) {
$rec = game_question_shortanswer( $game, $game->param7, false);
if ($rec === false) {
continue;
}
$answer = game_upper( $rec->answertext, $game->language);
if( $game->language == '')
{
if ($game->language == '') {
$game->language = game_detectlanguage( $answer);
$answer = game_upper( $rec->answertext, $game->language);
}
$answer2 = $answer;
if ($game->param7) {
//Have to delete space
// Have to delete space.
$answer2 = str_replace( ' ', '', $answer2);
}
if ($game->param8) {
//Have to delete -
// Have to delete -.
$answer2 = str_replace( '-', '', $answer2);
}
@ -60,12 +71,13 @@ function game_hangman_continue( $id, $game, $attempt, $hangman, $newletter, $act
if ($game->param7) {
$allletters .= '_';
}
if ($game->param8) {
$allletters .= '-';
}
if ($game->param7 == false) {
//I don't allow spaces
// I don't allow spaces.
if (strpos( $answer, " ")) {
continue;
}
@ -73,14 +85,14 @@ function game_hangman_continue( $id, $game, $attempt, $hangman, $newletter, $act
$copy = false;
$select2 = 'gameid=? AND userid=? AND questionid=? AND glossaryentryid=?';
if( ($rec2 = $DB->get_record_select( 'game_repetitions', $select2, array( $game->id, $USER->id, $rec->questionid, $rec->glossaryentryid), 'id,repetitions AS r')) != false){
if( ($rec2->r < $min_num) or ($min_num == 0)){
$min_num = $rec2->r;
if (($rec2 = $DB->get_record_select( 'game_repetitions', $select2,
array( $game->id, $USER->id, $rec->questionid, $rec->glossaryentryid), 'id,repetitions AS r')) != false) {
if (($rec2->r < $minnum) or ($minnum == 0)) {
$minnum = $rec2->r;
$copy = true;
}
}else
{
$min_num = 0;
} else {
$minnum = 0;
$copy = true;
}
@ -96,26 +108,29 @@ function game_hangman_continue( $id, $game, $attempt, $hangman, $newletter, $act
$min->answer = $answer;
$min->language = $game->language;
$min->allletters = $allletters;
if( $min_num == 0)
break; //We found an unused word
}else
if ($minnum == 0) {
break; // We found an unused word.
}
} else {
$unchanged++;
}
if( $unchanged > 2)
{
if( $found)
if ($unchanged > 2) {
if ($found) {
break;
}
}
}
if ($found == false) {
print_error( get_string( 'no_words', 'game'));
}
//Found one word for hangman
// Found one word for hangman.
if ($attempt == false) {
$attempt = game_addattempt( $game);
}
if (!$DB->set_field( 'game_attempts', 'language', $min->language, array( 'id' => $attempt->id))) {
print_error( "game_hangman_continue: Can't set language");
}
@ -134,7 +149,6 @@ function game_hangman_continue( $id, $game, $attempt, $hangman, $newletter, $act
$query->answertext = $min->answer;
$query->answerid = $min->answerid;
if (!($query->id = $DB->insert_record( 'game_queries', $query))) {
print_object( $query);
print_error( "game_hangman_continue: Can't insert to table game_queries");
}
@ -156,6 +170,7 @@ function game_hangman_continue( $id, $game, $attempt, $hangman, $newletter, $act
if ($game->param1) {
$letters .= game_substr( $min->answer, 0, 1);
}
if ($game->param2) {
$letters .= game_substr( $min->answer, -1, 1);
}
@ -165,8 +180,7 @@ function game_hangman_continue( $id, $game, $attempt, $hangman, $newletter, $act
if (!game_insert_record( 'game_hangman', $newrec)) {
print_error( 'game_hangman_continue: error inserting in game_hangman');
}
}else
{
} else {
if (!$DB->update_record( 'game_hangman', $newrec)) {
print_error( 'game_hangman_continue: error updating in game_hangman');
}
@ -178,8 +192,7 @@ function game_hangman_continue( $id, $game, $attempt, $hangman, $newletter, $act
game_hangman_play( $id, $game, $attempt, $newrec, false, false, $context);
}
function game_hangman_onfinishgame( $game, $attempt, $hangman)
{
function game_hangman_onfinishgame( $game, $attempt, $hangman) {
global $DB;
$score = $hangman->corrects / $hangman->maxtries;
@ -191,29 +204,30 @@ function game_hangman_onfinishgame( $game, $attempt, $hangman)
}
}
function game_hangman_play( $id, $game, $attempt, $hangman, $onlyshow, $showsolution, $context)
{
function game_hangman_play( $id, $game, $attempt, $hangman, $onlyshow, $showsolution, $context) {
global $CFG, $DB, $OUTPUT;
$query = $DB->get_record( 'game_queries', array( 'id' => $hangman->queryid));
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 ($game->toptext != '') {
echo $game->toptext.'<br>';
}
$max=$game->param10; // maximum number of wrong
if( $max <= 0)
$max = $game->param10; // Maximum number of wrongs.
if ($max <= 0) {
$max = 6;
hangman_showpage( $done, $correct, $wrong, $max, $word_line, $word_line2, $links, $game, $attempt, $hangman, $query, $onlyshow, $showsolution, $context);
}
hangman_showpage( $done, $correct, $wrong, $max, $wordline, $wordline2, $links, $game,
$attempt, $hangman, $query, $onlyshow, $showsolution, $context);
if (!$done)
{
if (!$done) {
if ($wrong > $max) {
$wrong = $max;
}
@ -225,24 +239,22 @@ function game_hangman_play( $id, $game, $attempt, $hangman, $onlyshow, $showsolu
echo ' ALIGN="MIDDLE" BORDER="0" HEIGHT="100" alt="'.$message.'"/>';
if ($wrong >= $max) {
//This word is incorrect. If reach the max number of word I have to finish else continue with next word
hangman_onincorrect( $id, $word_line, $query->answertext, $game, $attempt, $hangman, $onlyshow, $showsolution);
}else
{
// This word is incorrect. If reach the max number of word I have to finish else continue with next word.
hangman_onincorrect( $id, $wordline, $query->answertext, $game, $attempt, $hangman, $onlyshow, $showsolution);
} else {
$i = $max - $wrong;
if( $i > 1)
if ($i > 1) {
echo ' '.get_string( 'hangman_restletters_many', 'game', $i);
else
} else {
echo ' '.get_string( 'hangman_restletters_one', 'game');
}
if ($reverseprint) {
echo '<SPAN dir="'.($wordrtl ? 'rtl' : 'ltr').'">';
}
echo "<br/><font size=\"5\">\n$word_line</font>\r\n";
if( $word_line2 != ''){
echo "<br/><font size=\"5\">\n$word_line2</font>\r\n";
echo "<br/><font size=\"5\">\n$wordline</font>\r\n";
if ($wordline2 != '') {
echo "<br/><font size=\"5\">\n$wordline2</font>\r\n";
}
if ($reverseprint) {
@ -253,15 +265,15 @@ function game_hangman_play( $id, $game, $attempt, $hangman, $onlyshow, $showsolu
echo "<br/><br/><BR/>".get_string( 'hangman_letters', 'game').$links."\r\n";
}
}
}else
{
//This word is correct. If reach the max number of word I have to finish else continue with next word
hangman_oncorrect( $id, $word_line, $game, $attempt, $hangman, $query);
} else {
// This word is correct. If reach the max number of word I have to finish else continue with next word.
hangman_oncorrect( $id, $wordline, $game, $attempt, $hangman, $query);
}
echo "<br/><br/>".get_string( 'grade', 'game').' : '.round( $query->percent * 100).' %';
if ($hangman->maxtries > 1) {
echo '<br/><br/>'.get_string( 'hangman_gradeinstance', 'game').' : '.round( $hangman->corrects / $hangman->maxtries * 100).' %';
echo '<br/><br/>'.get_string( 'hangman_gradeinstance', 'game').' : '.
round( $hangman->corrects / $hangman->maxtries * 100).' %';
}
if ($game->bottomtext != '') {
@ -269,11 +281,11 @@ function game_hangman_play( $id, $game, $attempt, $hangman, $onlyshow, $showsolu
}
}
function hangman_showpage(&$done, &$correct, &$wrong, $max, &$word_line, &$word_line2, &$links, $game, &$attempt, &$hangman, &$query, $onlyshow, $showsolution, $context)
{
function hangman_showpage(&$done, &$correct, &$wrong, $max, &$wordline, &$wordline2, &$links,
$game, &$attempt, &$hangman, &$query, $onlyshow, $showsolution, $context) {
global $USER, $CFG, $DB;
$id = optional_param('id', 0, PARAM_INT); // Course Module ID, or
$id = optional_param('id', 0, PARAM_INT); // Course Module ID.
$word = $query->answertext;
@ -283,8 +295,7 @@ function hangman_showpage(&$done, &$correct, &$wrong, $max, &$word_line, &$word_
}
$letters = $hangman->letters;
if( $newletter != NULL)
{
if ($newletter != null) {
if (game_strpos( $letters, $newletter) === false) {
$letters .= $newletter;
}
@ -295,15 +306,14 @@ function hangman_showpage(&$done, &$correct, &$wrong, $max, &$word_line, &$word_
$alpha = $hangman->allletters;
$wrong = 0;
if( $query->questionid)
{
if ($query->questionid) {
$questiontext = str_replace( array("\'", '\"'), array("'", '"'), $query->questiontext);
$query->questiontext = game_filterquestion($questiontext, $query->questionid, $context->id, $game->course);
}else
{
} else {
$cmglossary = get_coursemodule_from_instance('glossary', $game->glossaryid, $game->course);
$contextglossary = game_get_context_module_instance( $cmglossary->id);
$query->questiontext = game_filterglossary(str_replace( '\"', '"', $query->questiontext), $query->glossaryentryid, $contextglossary->id, $game->course);
$query->questiontext = game_filterglossary(str_replace( '\"', '"',
$query->questiontext), $query->glossaryentryid, $contextglossary->id, $game->course);
}
if ($game->param5) {
@ -318,60 +328,53 @@ function hangman_showpage(&$done, &$correct, &$wrong, $max, &$word_line, &$word_
echo "<br/><br/>";
}
$word_line = $word_line2 = "";
$wordline = $wordline2 = "";
$len = game_strlen( $word);
$done = 1;
$answer = '';
$correct = 0;
for ($x=0; $x < $len; $x++)
{
for ($x = 0; $x < $len; $x++) {
$char = game_substr( $word, $x, 1);
if ($showsolution) {
$word_line2 .= ( $char == " " ? '&nbsp; ' : $char);
$wordline2 .= ( $char == " " ? '&nbsp; ' : $char);
$done = 0;
}
if (game_strpos($letters, $char) === false) {
$word_line.="_<font size=\"1\">&nbsp;</font>\r\n";
$wordline .= "_<font size=\"1\">&nbsp;</font>\r\n";
$done = 0;
$answer .= '_';
}else
{
$word_line .= ( $char == " " ? '&nbsp; ' : $char);
} else {
$wordline .= ( $char == " " ? '&nbsp; ' : $char);
$answer .= $char;
$correct++;
}
}
$len_alpha = game_strlen($alpha);
$lenalpha = game_strlen( $alpha);
$fontsize = 5;
for ($c=0; $c < $len_alpha; $c++)
{
for ($c = 0; $c < $lenalpha; $c++) {
$char = game_substr( $alpha, $c, 1);
if ( game_strpos($letters, $char) === false)
{
//User doesn't select this character
if (game_strpos($letters, $char) === false) {
// User doesn't select this character.
$params = 'id='.$id.'&amp;newletter='.urlencode( $char);
if ($onlyshow or $showsolution) {
$links .= $char;
}else
{
} else {
$links .= "<font size=\"$fontsize\"><a href=\"attempt.php?$params\">$char</a></font>\r\n";
}
continue;
}
if ( game_strpos($word, $char) === false)
{
if (game_strpos($word, $char) === false) {
$links .= "\r\n<font size=\"$fontsize\" color=\"red\">$char </font>";
$wrong++;
}else
{
} else {
$links .= "\r\n<B><font size=\"$fontsize\">$char </font></B> ";
}
}
@ -383,7 +386,7 @@ function hangman_showpage(&$done, &$correct, &$wrong, $max, &$word_line, &$word_
$updrec->letters = $letters;
if ($finishedword) {
if ($hangman->finishedword == 0) {
//only one time per word increace the variable try
// Only one time per word increace the variable try.
$hangman->try = $hangman->try + 1;
if ($hangman->try > $hangman->maxtries) {
$finished = true;
@ -396,7 +399,6 @@ function hangman_showpage(&$done, &$correct, &$wrong, $max, &$word_line, &$word_
$updrec->try = $hangman->try;
$updrec->finishedword = 1;
}
$query->percent = ($correct - $wrong / $max) / game_strlen( $word);
@ -416,8 +418,7 @@ function hangman_showpage(&$done, &$correct, &$wrong, $max, &$word_line, &$word_
$score = 1;
} else if ($wrong >= $max) {
$score = 0;
}else
{
} else {
$score = -1;
}
@ -425,14 +426,14 @@ function hangman_showpage(&$done, &$correct, &$wrong, $max, &$word_line, &$word_
game_update_queries( $game, $attempt, $query, $score, $answer);
}
//This word is correct. If reach the max number of words I have to finish else continue with next word
function hangman_oncorrect( $id, $word_line, $game, $attempt, $hangman, $query)
{
// This word is correct.
// If reach the max number of words I have to finish else continue with next word.
function hangman_oncorrect( $id, $wordline, $game, $attempt, $hangman, $query) {
global $DB;
echo "<BR/><BR/><font size=\"5\">\n$word_line</font>\r\n";
echo "<br/><br/><font size=\"5\">\n$wordline</font>\r\n";
echo '<p><BR/><font size="5" color="green">'.get_string( 'win', 'game').'</font><BR/><BR/></p>';
echo '<p><br/><font size="5" color="green">'.get_string( 'win', 'game').'</font><BR/><BR/></p>';
if ($query->answerid) {
$feedback = $DB->get_field( 'question_answers', 'feedback', array( 'id' => $query->answerid));
if ($feedback != '') {
@ -443,44 +444,43 @@ function hangman_oncorrect( $id, $word_line, $game, $attempt, $hangman, $query)
game_hangman_show_nextword( $id, $game, $attempt, $hangman);
}
function hangman_onincorrect( $id, $word_line, $word, $game, $attempt, $hangman, $onlyshow, $showsolution)
{
echo "\r\n<BR/><BR/><font size=\"5\">\n$word_line</font>\r\n";
function hangman_onincorrect( $id, $wordline, $word, $game, $attempt, $hangman, $onlyshow, $showsolution) {
echo "\r\n<br/><br/><font size=\"5\">\n$wordline</font>\r\n";
if( $onlyshow or $showsolution)
if ( $onlyshow or $showsolution) {
return;
}
echo '<p><BR/><font size="5" color="red">'.get_string( 'hangman_loose', 'game').'</font><BR/><BR/></p>';
if ($game->param6) {
//show the correct answer
if( game_strpos($word, ' ') != false)
// Show the correct answer.
if (game_strpos($word, ' ') != false) {
echo '<br/>'.get_string( 'hangman_correct_phrase', 'game');
else
} else {
echo '<br/>'.get_string( 'hangman_correct_word', 'game');
}
echo '<B>'.$word."</B><BR/><BR/>\r\n";
}
game_hangman_show_nextword( $id, $game, $attempt, $hangman, true);
}
function game_hangman_show_nextword( $id, $game, $attempt, $hangman)
{
function game_hangman_show_nextword( $id, $game, $attempt, $hangman) {
global $CFG, $DB;
echo '<br/>';
if (($hangman->try < $hangman->maxtries) or ($hangman->maxtries == 0)) {
//continue to next word
// Continue to next word.
$params = "id=$id&action2=nextword\">".get_string( 'nextword', 'game').'</a> &nbsp; &nbsp; &nbsp; &nbsp;';
echo "<a href=\"{$CFG->wwwroot}/mod/game/attempt.php?$params";
}else
{
} else {
game_hangman_onfinishgame( $game, $attempt, $hangman);
if( game_can_start_new_attempt( $game))
echo "<a href=\"{$CFG->wwwroot}/mod/game/attempt.php?id=$id\">".get_string( 'nextgame', 'game').'</a> &nbsp; &nbsp; &nbsp; &nbsp; ';
if (game_can_start_new_attempt( $game)) {
echo "<a href=\"{$CFG->wwwroot}/mod/game/attempt.php?id=$id\">".
get_string( 'nextgame', 'game').'</a> &nbsp; &nbsp; &nbsp; &nbsp; ';
}
}
if (! $cm = $DB->get_record('course_modules', array( 'id' => $id))) {

78
hiddenpicture/picture.php

@ -1,20 +1,33 @@
<?php // $Id: picture.php,v 1.3 2010/07/26 00:13:32 bdaloukas Exp $
<?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/>.
require( '../../../config.php');
$id = required_param('id', PARAM_INT); // Course Module ID
$attemptid = required_param('id2', PARAM_INT); // Course Module ID
$id = required_param('id', PARAM_INT); // Course Module ID.
$attemptid = required_param('id2', PARAM_INT); // Course Module ID.
$foundcells = required_param('f', PARAM_SEQUENCE); //CSV
$cells = required_param('cells', PARAM_SEQUENCE); //CSV
$foundcells = required_param('f', PARAM_SEQUENCE); // CSV.
$cells = required_param('cells', PARAM_SEQUENCE); // CSV.
$filehash = required_param('p', PARAM_PATH);
$cols = required_param('cols', PARAM_INT);
$rows = required_param('rows', PARAM_INT);
$filenamenumbers = required_param('n', PARAM_PATH); //Path to numbers picture
$filenamenumbers = required_param('n', PARAM_PATH); // Path to numbers picture.
create_image( $id, $attemptid, $foundcells, $cells, $filehash, $cols, $rows, $filenamenumbers);
function create_image( $id, $attemptid, $foundcells, $cells, $filehash, $cols, $rows, $filenamenumbers)
{
function create_image( $id, $attemptid, $foundcells, $cells, $filehash, $cols, $rows, $filenamenumbers) {
global $CFG;
$a = explode( ',', $foundcells);
@ -36,16 +49,16 @@ function create_image( $id, $attemptid, $foundcells, $cells, $filehash, $cols, $
die("Aknown filehash $filehash");
return false;
}
$img_handle = imagecreatefromstring($file->get_content());
$imghandle = imagecreatefromstring($file->get_content());
$mime = $image[ 'mimetype'];
$img_numbers = imageCreateFromPNG( $filenamenumbers);
$size_numbers = getimagesize ($filenamenumbers);
$imgnumbers = imagecreatefrompng( $filenamenumbers);
$sizenumbers = getimagesize ($filenamenumbers);
Header ("Content-type: $mime");
header("Content-type: $mime");
$color = ImageColorAllocate ($img_handle, 100, 100, 100);
$color = imagecolorallocate( $imghandle, 100, 100, 100);
$width = $image[ 'width'];
$height = $image[ 'height'];
@ -59,10 +72,10 @@ function create_image( $id, $attemptid, $foundcells, $cells, $filehash, $cols, $
if (!array_key_exists( $pos, $found)) {
$x1 = $x * $width / $cols;
$y1 = $y * $height / $rows;
imagefilledrectangle( $img_handle, $x1, $y1, $x1 + $width / $cols, $y1 + $height / $rows, $color);
imagefilledrectangle( $imghandle, $x1, $y1, $x1 + $width / $cols, $y1 + $height / $rows, $color);
if (array_key_exists( $pos, $cells)) {
shownumber( $img_handle, $img_numbers, $pos, $x1 , $y1, $width / $cols, $height / $rows, $size_numbers);
shownumber( $imghandle, $imgnumbers, $pos, $x1 , $y1, $width / $cols, $height / $rows, $sizenumbers);
}
}
}
@ -70,38 +83,37 @@ function create_image( $id, $attemptid, $foundcells, $cells, $filehash, $cols, $
switch ($mime) {
case 'image/png':
ImagePng ($img_handle);
imagepng ($imghandle);
break;
case 'image/jpeg':
ImageJpeg ($img_handle);
imagejpeg ($imghandle);
break;
case 'image/gif':
ImageGif ($img_handle);
imagegif ($imghandle);
break;
default:
die('Aknown mime type $mime');
return false;
}
ImageDestroy ($img_handle);
imagedestroy ($imghandle);
}
function shownumber( $img_handle, $img_numbers, $number, $x1 , $y1, $width, $height, $size_numbers){
function shownumber( $imghandle, $imgnumbers, $number, $x1 , $y1, $width, $height, $sizenumbers) {
if ($number < 10) {
$width_number = $size_numbers[ 0] / 10;
$dstX = $x1 + $width / 3;
$dstY = $y1 + $height / 3;
$srcX = $number * $size_numbers[ 0] / 10;
$srcW = $size_numbers[ 0]/10;
$srcH = $size_numbers[ 1];
$dstW = $width / 10;
$dstH = $dstW * $srcH / $srcW;
imagecopyresized( $img_handle, $img_numbers, $dstX, $dstY, $srcX, 0, $dstW, $dstH, $srcW, $srcH);
}else
{
$widthnumber = $sizenumbers[ 0] / 10;
$dstx = $x1 + $width / 3;
$dsty = $y1 + $height / 3;
$srcx = $number * $sizenumbers[ 0] / 10;
$srcw = $sizenumbers[ 0] / 10;
$srch = $sizenumbers[ 1];
$dstw = $width / 10;
$dsth = $dstw * $srch / $srcw;
imagecopyresized( $imghandle, $imgnumbers, $dstx, $dsty, $srcx, 0, $dstw, $dsth, $srcw, $srchh);
} else {
$number1 = floor( $number / 10);
$number2 = $number % 10;
shownumber( $img_handle, $img_numbers, $number1, $x1-$width/20, $y1, $width, $height, $size_numbers);
shownumber( $img_handle, $img_numbers, $number2, $x1+$width/20, $y1, $width, $height, $size_numbers);
shownumber( $imghandle, $imgnumbers, $number1, $x1 - $width / 20, $y1, $width, $height, $sizenumbers);
shownumber( $imghandle, $imgnumbers, $number2, $x1 + $width / 20, $y1, $width, $height, $sizenumbers);
}
}

146
hiddenpicture/play.php

@ -1,18 +1,31 @@
<?php // $Id: play.php,v 1.19 2012/08/15 09:26:55 bdaloukas Exp $
// This file plays the game Hidden Picture
function game_hiddenpicture_continue( $id, $game, $attempt, $hiddenpicture, $context)
{
<?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/>.
// This file plays the game Hidden Picture.
function game_hiddenpicture_continue( $id, $game, $attempt, $hiddenpicture, $context) {
global $DB, $USER;
if ($attempt != false and $hiddenpicture != false) {
//Continue a previous attempt
// Continue a previous attempt.
return game_hiddenpicture_play( $id, $game, $attempt, $hiddenpicture, false, $context);
}
if ($attempt == false) {
//Start a new attempt
// Start a new attempt.
$attempt = game_addattempt( $game);
}
@ -25,10 +38,10 @@ function game_hiddenpicture_continue( $id, $game, $attempt, $hiddenpicture, $con
print_error( get_string( 'hiddenpicture_norows', 'game'));
}
//new attempt
// New attempt.
$n = $game->param1 * $game->param2;
$recs = game_questions_selectrandom( $game, CONST_GAME_TRIES_REPETITION * $n);
$selected_recs = game_select_from_repetitions( $game, $recs, $n);
$selectedrecs = game_select_from_repetitions( $game, $recs, $n);
$newrec = game_hiddenpicture_selectglossaryentry( $game, $attempt);
@ -45,15 +58,16 @@ function game_hiddenpicture_continue( $id, $game, $attempt, $hiddenpicture, $con
}
$i = 0;
$field = ($game->sourcemodule == 'glossary' ? 'glossaryentryid' : 'questionid');
foreach( $recs as $rec)
{
if( $game->sourcemodule == 'glossary')
foreach ($recs as $rec) {
if ($game->sourcemodule == 'glossary') {
$key = $rec->glossaryentryid;
else
} else {
$key = $rec->questionid;
}
if( !array_key_exists( $key, $selected_recs))
if (!array_key_exists( $key, $selectedrecs)) {
continue;
}
$query = new stdClass();
$query->attemptid = $newrec->id;
@ -75,13 +89,13 @@ function game_hiddenpicture_continue( $id, $game, $attempt, $hiddenpicture, $con
game_update_repetitions($game->id, $USER->id, $query->questionid, $query->glossaryentryid);
}
//The score is zero
// The score is zero.
game_updateattempts( $game, $attempt, 0, 0);
game_hiddenpicture_play( $id, $game, $attempt, $newrec, false, $context);
}
//Create the game_hiddenpicture record
// Create the game_hiddenpicture record.
function game_hiddenpicture_selectglossaryentry( $game, $attempt) {
global $CFG, $DB, $USER;
@ -97,7 +111,7 @@ function game_hiddenpicture_selectglossaryentry( $game, $attempt){
$select .= " AND gec.entryid = ge.id AND gec.categoryid = {$game->glossarycategoryid2}";
}
if ($game->param7 == 0) {
//Allow spaces
// Allow spaces.
$select .= " AND concept NOT LIKE '% %'";
}
@ -114,10 +128,8 @@ function game_hiddenpicture_selectglossaryentry( $game, $attempt){
$context = game_get_context_module_instance( $cmg->id);
foreach ($recs as $rec) {
$files = $fs->get_area_files($context->id, 'mod_glossary', 'attachment', $rec->id, "timemodified", false);
if( $files)
{
foreach( $files as $key => $file)
{
if ($files) {
foreach ($files as $key => $file) {
$s = strtoupper( $file->get_filename());
$s = substr( $s, -4);
if ($s == '.GIF' or $s == '.JPG' or $s == '.PNG') {
@ -133,37 +145,37 @@ function game_hiddenpicture_selectglossaryentry( $game, $attempt){
return false;
}
//Have to select randomly one glossaryentry
// Have to select randomly one glossaryentry.
$poss = array();
for ($i = 0; $i < count($ids); $i++) {
$poss[] = $i;
}
shuffle( $poss);
$min_num = 0;
$minnum = 0;
$attachement = '';
for ($i = 0; $i < count($ids); $i++) {
$pos = $poss[ $i];
$tempid = $ids[ $pos];
$a = array( 'gameid' => $game->id, 'userid' => $USER->id, 'questionid' => 0, 'glossaryentryid' => $tempid);
if (($rec2 = $DB->get_record('game_repetitions', $a, 'id,repetitions r')) != false) {
if( ($rec2->r < $min_num) or ($min_num == 0)){
$min_num = $rec2->r;
if (($rec2->r < $minnum) or ($minnum == 0)) {
$minnum = $rec2->r;
$glossaryentryid = $tempid;
$attachement = $keys[ $pos];
}
}
else{
} else {
$glossaryentryid = $tempid;
$attachement = $keys[ $pos];
break;
}
}
$sql = 'SELECT id, concept as answertext, definition as questiontext, id as glossaryentryid, 0 as questionid, glossaryid, attachment'.
$sql = 'SELECT id, concept as answertext, definition as questiontext,'.
' id as glossaryentryid, 0 as questionid, glossaryid, attachment'.
' FROM {glossary_entries} WHERE id = '.$glossaryentryid;
if( ($rec = $DB->get_record_sql( $sql)) == false)
if (($rec = $DB->get_record_sql( $sql)) == false) {
return false;
}
$query = new stdClass();
$query->attemptid = $attempt->id;
$query->gamekind = $game->gamekind;
@ -193,30 +205,31 @@ function game_hiddenpicture_selectglossaryentry( $game, $attempt){
return $newrec;
}
function game_hiddenpicture_play( $id, $game, $attempt, $hiddenpicture, $showsolution, $context)
{
function game_hiddenpicture_play( $id, $game, $attempt, $hiddenpicture, $showsolution, $context) {
if ($game->toptext != '') {
echo $game->toptext.'<br>';
}
//Show picture
// Show picture.
$offsetquestions = game_sudoku_compute_offsetquestions( $game->sourcemodule, $attempt, $numbers, $correctquestions);
unset( $offsetquestions[ 0]);
game_hiddenpicture_showhiddenpicture( $id, $game, $attempt, $hiddenpicture, $showsolution, $offsetquestions, $correctquestions, $id, $attempt, $showsolution);
game_hiddenpicture_showhiddenpicture( $id, $game, $attempt, $hiddenpicture, $showsolution,
$offsetquestions, $correctquestions, $id, $attempt, $showsolution);
//Show questions
// Show questions.
$onlyshow = false;
$showsolution = false;
switch( $game->sourcemodule)
{
switch ($game->sourcemodule) {
case 'quiz':
case 'question':
game_sudoku_showquestions_quiz( $id, $game, $attempt, $hiddenpicture, $offsetquestions, $numbers, $correctquestions, $onlyshow, $showsolution, $context);
game_sudoku_showquestions_quiz( $id, $game, $attempt, $hiddenpicture, $offsetquestions,
$numbers, $correctquestions, $onlyshow, $showsolution, $context);
break;
case 'glossary':
game_sudoku_showquestions_glossary( $id, $game, $attempt, $hiddenpicture, $offsetquestions, $numbers, $correctquestions, $onlyshow, $showsolution);
game_sudoku_showquestions_glossary( $id, $game, $attempt, $hiddenpicture,
$offsetquestions, $numbers, $correctquestions, $onlyshow, $showsolution);
break;
}
@ -241,7 +254,8 @@ function game_hidden_picture_computescore( $game, $hiddenpicture){
return $percent;
}
function game_hiddenpicture_showhiddenpicture( $id, $game, $attempt, $hiddenpicture, $showsolution, $offsetquestions, $correctquestions){
function game_hiddenpicture_showhiddenpicture( $id, $game, $attempt, $hiddenpicture, $showsolution,
$offsetquestions, $correctquestions) {
global $DB;
$foundcells = '';
@ -255,9 +269,10 @@ function game_hiddenpicture_showhiddenpicture( $id, $game, $attempt, $hiddenpict
}
}
$query = $DB->get_record_select( 'game_queries', "attemptid=$hiddenpicture->id AND col=0", null, 'id,glossaryentryid,attachment,questiontext');
$query = $DB->get_record_select( 'game_queries', "attemptid=$hiddenpicture->id AND col=0",
null, 'id,glossaryentryid,attachment,questiontext');
//Grade
// Grade.
echo "<br/>".get_string( 'grade', 'game').' : '.round( $attempt->score * 100).' %';
game_hiddenpicture_showquestion_glossary( $game, $id, $query);
@ -267,23 +282,24 @@ function game_hiddenpicture_showhiddenpicture( $id, $game, $attempt, $hiddenpict
game_showpicture( $id, $game, $attempt, $query, $cells, $foundcells, true);
}
function game_hiddenpicture_showquestion_glossary( $game, $id, $query)
{
function game_hiddenpicture_showquestion_glossary( $game, $id, $query) {
global $CFG, $DB;
$entry = $DB->get_record( 'glossary_entries', array( 'id' => $query->glossaryentryid));
/// Start the form
// Start the form.
echo '<br>';
echo "<form id=\"responseform\" method=\"post\" action=\"{$CFG->wwwroot}/mod/game/attempt.php\" onclick=\"this.autocomplete='off'\">\n";
echo "<center><input type=\"submit\" name=\"finishattempt\" value=\"".get_string('hiddenpicture_mainsubmit', 'game')."\"></center>\n";
echo "<form id=\"responseform\" method=\"post\" ".
"action=\"{$CFG->wwwroot}/mod/game/attempt.php\" onclick=\"this.autocomplete='off'\">\n";
echo "<center><input type=\"submit\" name=\"finishattempt\" ".
"value=\"".get_string('hiddenpicture_mainsubmit', 'game')."\"></center>\n";
// Add a hidden field with the queryid
// Add a hidden field with the queryid.
echo '<input type="hidden" name="id" value="' . s($id) . "\" />\n";
echo '<input type="hidden" name="action" value="hiddenpicturecheckg" />';
echo '<input type="hidden" name="queryid" value="' . $query->id . "\" />\n";
// Add a hidden field with glossaryentryid
// Add a hidden field with glossaryentryid.
echo '<input type="hidden" name="glossaryentryid" value="'.$query->glossaryentryid."\" />\n";
$temp = $game->glossaryid;
@ -297,8 +313,7 @@ function game_hiddenpicture_showquestion_glossary( $game, $id, $query)
echo "</form><br>\n";
}
function game_hiddenpicture_check_questions( $id, $game, &$attempt, &$hiddenpicture, $finishattempt)
{
function game_hiddenpicture_check_questions( $id, $game, &$attempt, &$hiddenpicture, $finishattempt) {
global $QTYPES, $DB;
$responses = data_submitted();
@ -314,7 +329,7 @@ function game_hiddenpicture_check_questions( $id, $game, &$attempt, &$hiddenpict
$correct = $wrong = 0;
foreach ($questions as $question) {
if (!array_key_exists( $question->id, $actions)) {
//no answered
// No answered.
continue;
}
unset( $state);
@ -338,11 +353,11 @@ function game_hiddenpicture_check_questions( $id, $game, &$attempt, &$hiddenpict
if ($answertext != '') {
$grade = $state->raw_grade;
if ($grade < 50) {
//wrong answer
// Wrong answer.
game_update_queries( $game, $attempt, $query, $grade / 100, $answertext);
$wrong++;
} else {
//correct answer
// Correct answer.
game_update_queries( $game, $attempt, $query, 1, $answertext);
$correct++;
}
@ -366,8 +381,7 @@ function game_hiddenpicture_check_questions( $id, $game, &$attempt, &$hiddenpict
return true;
}
function game_hiddenpicture_check_mainquestion( $id, $game, &$attempt, &$hiddenpicture, $finishattempt, $context)
{
function game_hiddenpicture_check_mainquestion( $id, $game, &$attempt, &$hiddenpicture, $finishattempt, $context) {
global $QTYPES, $CFG, $DB;
$responses = data_submitted();
@ -375,7 +389,7 @@ function game_hiddenpicture_check_mainquestion( $id, $game, &$attempt, &$hiddenp
$glossaryentryid = $responses->glossaryentryid;
$queryid = $responses->queryid;
// Load the glossary entry
// Load the glossary entry.
if (!($entry = $DB->get_record( 'glossary_entries', array( 'id' => $glossaryentryid)))) {
print_error( get_string( 'noglossaryentriesfound', 'game'));
}
@ -387,7 +401,7 @@ function game_hiddenpicture_check_mainquestion( $id, $game, &$attempt, &$hiddenp
}
}
// Load the query
// Load the query.
if (!($query = $DB->get_record( 'game_queries', array( 'id' => $queryid)))) {
print_error( "The query $queryid not found");
}
@ -411,10 +425,11 @@ function game_hiddenpicture_check_mainquestion( $id, $game, &$attempt, &$hiddenp
return true;
}
//Finish the game
$query = $DB->get_record_select( 'game_queries', "attemptid=$hiddenpicture->id AND col=0", null, 'id,glossaryentryid,attachment,questiontext');
// Finish the game.
$query = $DB->get_record_select( 'game_queries', "attemptid=$hiddenpicture->id AND col=0",
null, 'id,glossaryentryid,attachment,questiontext');
game_showpicture( $id, $game, $attempt, $query, '', '', false);
echo '<p><BR/><font size="5" color="green">'.get_string( 'win', 'game').'</font><BR/><BR/></p>';
echo '<p><br/><font size="5" color="green">'.get_string( 'win', 'game').'</font><BR/><BR/></p>';
global $CFG;
echo '<br/>';
@ -431,8 +446,7 @@ function game_hiddenpicture_check_mainquestion( $id, $game, &$attempt, &$hiddenp
return false;
}
function game_showpicture( $id, $game, $attempt, $query, $cells, $foundcells, $usemap)
{
function game_showpicture( $id, $game, $attempt, $query, $cells, $foundcells, $usemap) {
global $CFG;
$filenamenumbers = str_replace( "\\", '/', $CFG->dirroot)."/mod/game/hiddenpicture/numbers.png";
@ -454,8 +468,7 @@ function game_showpicture( $id, $game, $attempt, $query, $cells, $foundcells, $u
} else if ( $game->param5 > 10) {
$height = $game->param5;
$width = $image[ 'width'] * $height / $image[ 'height'];
}else
{
} else {
$width = $image[ 'width'];
$height = $image[ 'height'];
}
@ -483,4 +496,3 @@ function game_showpicture( $id, $game, $attempt, $query, $cells, $foundcells, $u
echo "</MAP>";
}
}

12
lib.php

@ -868,7 +868,7 @@ function game_get_types() {
$type->typestr = '--'.get_string( 'modulenameplural', 'game');
$types[] = $type;
$hide = ( isset( $config->hidehangman)) ? ($config->hidehangman != 0) : false);
$hide = ( isset( $config->hidehangman) ? ($config->hidehangman != 0) : false);
if ($hide == false) {
$type = new object();
@ -906,7 +906,7 @@ function game_get_types() {
$types[] = $type;
}
$hide = (isset( $config->hidemillionaire)) ? ($config->hidemillionaire != 0) : false);
$hide = (isset( $config->hidemillionaire) ? ($config->hidemillionaire != 0) : false);
if ($hide == false) {
$type = new object();
$type->modclass = MOD_CLASS_ACTIVITY;
@ -915,7 +915,7 @@ function game_get_types() {
$types[] = $type;
}
$hide = (isset( $config->hidesudoku)) ? ($config->hidesudoku != 0) : false);
$hide = (isset( $config->hidesudoku) ? ($config->hidesudoku != 0) : false);
if ($hide == false) {
$type = new object();
$type->modclass = MOD_CLASS_ACTIVITY;
@ -924,7 +924,7 @@ function game_get_types() {
$types[] = $type;
}
$hide = (isset( $config->hidesnakes)) ? ($config->hidesnakes != 0) : false);
$hide = (isset( $config->hidesnakes) ? ($config->hidesnakes != 0) : false);
if ($hide == false) {
$type = new object();
$type->modclass = MOD_CLASS_ACTIVITY;
@ -933,7 +933,7 @@ function game_get_types() {
$types[] = $type;
}
$hide = (isset( $config->hidehiddenpicture)) ? ($config->hidehiddenpicture != 0) : false);
$hide = (isset( $config->hidehiddenpicture) ? ($config->hidehiddenpicture != 0) : false);
if ($hide == false) {
$type = new object();
$type->modclass = MOD_CLASS_ACTIVITY;
@ -942,7 +942,7 @@ function game_get_types() {
$types[] = $type;
}
$hide = (isset( $config->hidebookquiz)) ? ($config->hidebookquiz != 0) : false);
$hide = (isset( $config->hidebookquiz) ? ($config->hidebookquiz != 0) : false);
if ($hide == false) {
if ($DB->get_record( 'modules', array( 'name' => 'book'), 'id,id')) {
$type = new object();

Loading…
Cancel
Save