示例#1
0
function game_cryptex_continue($id, $game, $attempt, $cryptexrec, $endofgame, $context)
{
    global $DB, $USER;
    if ($endofgame) {
        game_updateattempts($game, $attempt, -1, true);
        $endofgame = 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);
    }
    if ($attempt === false) {
        $attempt = game_addattempt($game);
    }
    $cryptex = new CryptexDB();
    $questions = array();
    $infos = array();
    $answers = array();
    $recs = game_questions_shortanswer($game);
    if ($recs == false) {
        print_error(get_string('no_words', 'game'));
    }
    $infos = array();
    $reps = array();
    foreach ($recs as $rec) {
        if ($game->param7 == false) {
            if (textlib::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);
        $a = array('gameid' => $game->id, 'userid' => $USER->id, 'questionid' => $rec->questionid, 'glossaryentryid' => $rec->glossaryentryid);
        if (($rec2 = $DB->get_record('game_repetitions', $a, 'id,repetitions r')) != false) {
            $reps[$rec->answertext] = $rec2->r;
        }
    }
    $cryptex->setwords($answers, $game->param1, $reps);
    if ($cryptex->computedata($crossm, $crossd, $letters, $game->param2)) {
        $new_crossd = array();
        foreach ($crossd as $rec) {
            if (array_key_exists($rec->answertext, $infos)) {
                $info = $infos[$rec->answertext];
                $rec->id = 0;
                $rec->sourcemodule = $info[0];
                $rec->questionid = $info[1];
                $rec->glossaryentryid = $info[2];
            }
            game_update_queries($game, $attempt, $rec, 0, '');
            $new_crossd[] = $rec;
        }
        $cryptexrec = $cryptex->savecryptex($game, $crossm, $new_crossd, $attempt->id, $letters);
    }
    game_updateattempts($game, $attempt, 0, 0);
    return game_cryptex_play($id, $game, $attempt, $cryptexrec, $crossm, false, false, false, $context);
}
示例#2
0
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 (textlib::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 r')) != false) {
            $reps[$rec->answertext] = $rec2->r;
        }
    }
    $cross->setwords($answers, $game->param1, $reps);
    //game->param2 is maximum words in crossword
    if ($cross->computedata($crossm, $crossd, $lettets, $game->param2)) {
        $new_crossd = 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];
            }
            $new_crossd[] = $rec;
        }
        $cross->savecross($game, $crossm, $new_crossd, $attemptid);
    }
    if (count($crossd) == 0) {
        print_error('game_cross_continue: ' . get_string('no_words', 'game'));
    }
}
 /**
  * Tests the static strpos method
  * @return void
  */
 public function test_strpos()
 {
     $str = "Žluťoučký koníček";
     $this->assertSame(textlib::strpos($str, 'koníč'), 10);
 }
function game_strpos($haystack, $needle, $offset = 0)
{
    if (game_get_moodle_version() >= '02.08') {
        return core_text::strpos($haystack, $needle, $offset);
    }
    if (game_get_moodle_version() >= '02.04') {
        return textlib::strpos($haystack, $needle, $offset);
    }
    return textlib_get_instance()->strpos($haystack, $needle, $offset);
}
示例#5
0
function hangman_existall($str, $strfind)
{
    $n = textlib::strlen($str);
    for ($i = 0; $i < $n; $i++) {
        $pos = textlib::strpos($strfind, textlib::substr($str, $i, 1));
        if ($pos === false) {
            return false;
        }
    }
    return true;
}
示例#6
0
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";
    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 (textlib::strpos($word, ' ') != false) {
            echo '<br/>' . get_string('hangman_correct_phrase', 'game');
        } 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);
}