php - PHP 游戏中的循环迭代

标签 php javascript

尝试让它循环 3 次,并在第 3 次之后(如果没有猜对)显示正确的答案。

目前 - 它正在进行猜测,但没有显示还剩下多少猜测(应该扣除每个@每次尝试)。

有人吗?如果你能告诉我我哪里出错了。

<style type="text/css">
input {border:1px solid #ADD8E6; font-size:1.2em;}
input.spec {background-color:#ddd;}
</style>
<?php
    echo "<fieldset><h1><legend>Testing your Academy Award Trivia</h1>";
    $ages['Casablanca'] = "1943";
    $ages['Around The World in 80 Days'] = "1956";
    $ages['Patton'] = "1970";
    $ages['Annie Hall'] = "1977";
    $ages['Chariots of Fire'] = "1981";
    $ages['Dances With Wolves'] = "1990";
    $ages['Crash'] = "2005";
    $ages['The Departed'] = "2006";

    $rand_keys = array_rand($ages, 1);

    $guesses = 3;

?>
<form method='post' name="inputyear" onsubmit="return validate(this);">
Give the year below won academy award<br><br>
<Strong>Movie:</strong> <input type='text' name='movie' class="spec" value='<?= $rand_keys ?>'     readonly='readonly' /><br><br>
<Strong>Year it Won the Oscar:</Strong> <input type='text' name='year' size="30" /><br/><br>
<strong>You have: </strong> <?php $guesses; ?> guesses left<br><br>
<input type='submit' name='submit' value="Get Result" onClick="makeGuess()" />
</form>

<?php
$movie = isset($_POST['movie']) ? $_POST['movie'] : false;
$guessedYear = isset($_POST['year']) ? (int) $_POST['year'] : false;
if ($movie && $guessedYear) {
    $realyear = $ages[$movie];
}
@$_SESSION[$movie]['$guesses']++;
if ($realyear && $_SESSION[$movie]['$guesses'] < 3) {

    if ($guessedYear == $realyear) {
        echo "Correct! " . "during year " . $realyear;
    }
    if ($guessedYear < $realyear) {
        echo "Wrong, year too low";
        $guesses--;
    }
    if ($guessedYear > $realyear) {
        echo "Wrong, year too high";
        $guesses--;
    }

} elseif ($_SESSION[$movie]['$guesses'] >= 3) {
    echo "Sorry, too many tries. the answer was " . $realyear;
} else {
    echo "Sorry, You managed not to pick a year. Please try again";
    $_SESSION[$movie]['guesscount']--;
}
?>

最佳答案

return 语句离开循环和脚本

去掉两个 return 语句

直流

您对重复问题的进一步评论... Allowing 3 attempts at game - php

看来这个问题本身就是一个“家庭作业”问题,事实上,对于所有问题,没有人会给你完整的答案,我认为他们也不应该。我们都希望提出问题的人能够自行调查并理解给出的答案。

现在,就您的问题而言,您似乎缺少有关 HTTP 如何工作的重要信息(http 是驱动所有网页和互联网许多其他部分的协议(protocol))。

http 被认为是无状态协议(protocol),也就是说,当您单击网页中的链接并转到另一个网页(甚至同一网页)时,新网页会将您视为全新的访问者。它实际上已经忘记了你。

因为这引入了购物车(和 PHP 游戏)等问题,所以发明了 cookie。这使得浏览器可以携带有关您的少量信息,这样网络服务器或应用程序就可以记住您。这已扩展到受访者所说的 session 中。

session (通常)是存储标识符的 cookie。该标识符告诉(在本例中为 PHP)您以前去过那里以及在哪里可以找到有关您的信息。 PHP 可以加载此信息并将其提供给程序员。

每次加载页面时都会发生这种情况。

现在 PHP 不知道在此“ session ”中存储什么内容,由程序员决定需要存储哪些信息。您需要告诉 PHP 保存此信息以供下次加载页面时使用。

根据您的情况,由您决定需要记住什么。将页面的重新加载视为循环的新“迭代”。这应该会让您得出一些关于需要从一次迭代传递到下一次迭代的内容的明显结论。

给你。我还没有为您写出答案,但希望已经提供了足够的信息,让您能够出色地通过类(class)。

直流

关于php - PHP 游戏中的循环迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4892506/

相关文章:

php - 调用未定义的方法 Google_Service_Drive_FileList::getItems()

php - 如何以数组形式检索包含括号 {} 之间的数据的 MySQL 数据库字段

php - 引用:什么是变量范围,哪些变量可从何处访问,什么是“ undefined variable ”错误?

php - 删除或更新 SQL 中的重复值

javascript - R Shiny 中的绘图,包括 Javascript (d3.js)

c# - 拖放后回发?

javascript - ServiceWorker 执行文件中未定义 Notification.requestPermission。 Chrome

javascript - 如何使整个网页变暗并显示 float 交互式框?

javascript - D3 : Stacked bar chart exit(). remove() 不删除栏

php - 如何从我的 PHP 服务器生成和导出大 CSV 文件?