我有十个问题和答案。我使用arry_rand和shuffle随机分配问题,并随机整理答案。我如何确保只问一次问题。在浏览完所有十个问题后,我希望游戏结束。谢谢您的帮助!:)这是我到目前为止所拥有的。
include ("inc/questions.php");
session_start();
$pageTitle = "Math Quiz: Addition";
$_SESSION["score"]= 0;
if ((isset($_SESSION["score"]) && $choices[0]["correctAnswer"])){
$_SESSION["score"] += 1;
}
echo $_SESSION["score"];
$rand = array_rand($questions,1);
shuffle($questions);
$choices = [
$questions[0]["correctAnswer"],
$questions[0]["firstIncorrectAnswer"],
$questions[0]["secondIncorrectAnswer"],
];
shuffle($choices);
if ((!isset($_SESSION["counter"]) || $_SESSION["counter"] >9)){
$_SESSION["counter"] = 1;
} else {
$_SESSION["counter"] += 1;
}
?>
<html lang="en">
<head>
<meta charset="UTF-8">
<title><?php echo "$pageTitle";?> </title>
<link href='https://fonts.googleapis.com/css?family=Playfair+Display:400,400italic,700,700italic' rel='stylesheet' type='text/css'>
<link rel="stylesheet" href="css/normalize.css">
<link rel="stylesheet" href="css/styles.css">
</head>
<body>
<div class="container">
<div id="quiz-box">
<p class="breadcrumbs"> <?php echo "Question Number " . $_SESSION["counter"] . " of " . "10"; ?>
<p class="quiz"><?php echo "What is " . $questions[0]["leftAdder"] . " + " . $questions[0]["rightAdder"];?></p>
<form action="index.php" method="post">
<input type="hidden" name="id" value="0"/>
<input type="submit" class="btn" name="answer1" value="<?php echo $choices[0];?>" />
<input type="submit" class="btn" name="answer2" value="<?php echo $choices[1];?>" />
<input type="submit" class="btn" name="answer3" value="<?php echo $choices[2];?>" />
</form>
</div>
</div>
</body>
</html>
这是一系列问题和答案...
$questions[] =
[
"leftAdder" => 3,
"rightAdder" => 4,
"correctAnswer" => 7,
"firstIncorrectAnswer" => 8,
"secondIncorrectAnswer" => 10,
];
$questions[] =
[
"leftAdder" => 16,
"rightAdder" => 32,
"correctAnswer" => 48,
"firstIncorrectAnswer" => 52,
"secondIncorrectAnswer" => 61,
];
$questions[] =
[
"leftAdder" => 45,
"rightAdder" => 12,
"correctAnswer" => 57,
"firstIncorrectAnswer" => 63,
"secondIncorrectAnswer" => 55,
];
$questions[] =
[
"leftAdder" => 42,
"rightAdder" => 18,
"correctAnswer" => 60,
"firstIncorrectAnswer" => 69,
"secondIncorrectAnswer" => 57
];
$questions[] =
[
"leftAdder" => 96,
"rightAdder" => 20,
"correctAnswer" => 116,
"firstIncorrectAnswer" => 120,
"secondIncorrectAnswer" => 110
];
$questions[] =
[
"leftAdder" => 44,
"rightAdder" => 85,
"correctAnswer" => 129,
"firstIncorrectAnswer" => 132,
"secondIncorrectAnswer" => 126
];
$questions[] =
[
"leftAdder" => 51,
"rightAdder" => 35,
"correctAnswer" => 86,
"firstIncorrectAnswer" => 96,
"secondIncorrectAnswer" => 82
];
$questions[] =
[
"leftAdder" => 5,
"rightAdder" => 61,
"correctAnswer" => 66,
"firstIncorrectAnswer" => 65,
"secondIncorrectAnswer" => 74
];
$questions[] =
[
"leftAdder" => 26,
"rightAdder" => 19,
"correctAnswer" => 45,
"firstIncorrectAnswer" => 40,
"secondIncorrectAnswer" => 39
];
$questions[] =
[
"leftAdder" => 26,
"rightAdder" => 35,
"correctAnswer" => 61,
"firstIncorrectAnswer" => 59,
"secondIncorrectAnswer" => 51
];s the Array...
答案 0 :(得分:1)
您可以通过在每个会话中仅对问题进行一次改组,并将经过改组的版本保留在会话变量中来实现此目的,每次弹出一个问题。
其他一些问题:
$_POST[]
数组您可以使用以下代码:
// Check submitted answer is correct:
if (isset($_SESSION["correctAnswer"]) && isset($_POST[$_SESSION["correctAnswer"]])) {
$_SESSION["score"] += 1;
}
if (!isset($_SESSION["score"]) {
$_SESSION["score"] = 0;
$_SESSION["counter"] = 0;
shuffle($questions);
$_SESSION["questions"] = $questions;
}
echo "score = " . $_SESSION["score"];
if (count($_SESSION["questions"]) == 0) {
// Here you should navigate to a game-over page that
// displays the score and allows to start again (clearing the session).
die ("No more questions");
}
// Get next question
$currQuestion = array_pop($_SESSION["questions"]);
$_SESSION["correctAnswer"] = $currQuestion["correctAnswer"];
$choices = [
$currQuestion["correctAnswer"],
$currQuestion["firstIncorrectAnswer"],
$currQuestion["secondIncorrectAnswer"],
];
shuffle($choices);
$_SESSION["counter"] += 1;
在其余代码中,将$questions[0]
的出现替换为$currQuestion
。
答案 1 :(得分:0)
代替:
$rand = array_rand($questions,1);
shuffle($questions);
做
<div class="container">
<div id="quiz-box">
<?php
shuffle($questions);
for($i=0; $i<count($questions); $i++) {
?>
<p class="breadcrumbs"> <?php echo "Question Number " . $i . " of " . "10"; ?>
<p class="quiz"><?php echo "What is " . $questions[$i]["leftAdder"] . " + " . $questions[$i]["rightAdder"];?></p>
<form action="index.php" method="post">
<input type="hidden" name="id" value="0"/>
<input type="submit" class="btn" name="answer1" value="<?php echo $choices[$i][0];?>" />
<input type="submit" class="btn" name="answer2" value="<?php echo $choices[$i][1];?>" />
<input type="submit" class="btn" name="answer3" value="<?php echo $choices[$i][2];?>" />
</form>
</div>
</div>
<?php
}
?>