如何在 higher/lower 游戏中限制用户操作

How limit user actions in higher/lower game

嗯,我已经创建了一个简单的 higher/lower 游戏脚本。它工作正常,但我想将用户操作限制为 3。这意味着用户必须用 3 次移动来猜测数字。在第三个操作中,我将执行查询并将用户保存到 mysql。我如何限制 actions/moves?

<?php
session_start();
function Start_Again() {
    $number = rand(1,100);
    $_SESSION['higherlower'] = $number;
    echo "Select a Number below.";
    Display_Form();
}

function Display_Form() {
    echo "<table>";
    for ($num=1;$num < 101;$num++) {
        if (!preg_match("/(.*?)0/", $num)) { echo "<td><a href=\"?number=".$num."\">".$num."</td>"; }
        else { echo "<td><a href=\"?number=".$num."\">".$num."</td></tr><tr>"; }
    }
    echo "</table>";
}

if (isset($_GET['number'])) {
    $User_Number = $_GET['number'];
    $Actual_Number = $_SESSION['higherlower'];
    $count = 0;
    if ($User_Number < $Actual_Number) { echo "Higher"; $count + 1; Display_Form(); }
    elseif ($User_Number > $Actual_Number) { echo "Lower"; $count + 1; Display_Form(); }
    elseif ($User_Number == $Actual_Number) { echo "Bingo, Correct Guess!<br>"; Start_Again(); }
    echo $count;

}elseif (!isset($_POST['higherlower'])) { Start_Again(); }
?>

您已经开始会话,因此您可以将值存储在会话变量中,即 $_SESSION['count'];

session_start();
if( !isset( $_SESSION['count] ) ) $_SESSION['count'] = 1;

稍后在代码中您将需要更新计数器 $_SESSION['count']++; 并检查此人是否已用完所有猜测

if( $_SESSION['count'] > 3 ) { ..... }

当您初始化游戏时,只需将尝试次数存储在您的会话中。

$_SESSION['tries'] = 3;

然后,当用户选择一个数字时,降低尝试并检查它是否为 0。

$_SESSION['tries']--;
if ($_SESSION['tries'] <= 0) {
    die("Enough! You've been clicking numbers all afternoon.");
}

完全实施

<?php
/**
 * Higher-lower game
 */
if (!isset($_SESSION)) {
    session_start();
}

function Start_Again() {
    $number = rand(1,100);
    $_SESSION['higherlower'] = $number;
    $_SESSION['tries'] = 3;
    echo "Select a Number below.";
    Display_Form();
}

function Display_Form() {
    echo "<table>";
    $chunks = array_chunc(range(1, 100), 10);
    foreach ($chunks as $chunk) {
        echo "<tr>";
        foreach ($chunk as $num) {
            echo "<td><a href=\"?number=".$num."\">".$num."</td>";
        }
        echo "</tr>";
    }
    echo "</table>";
}

if (isset($_GET['number'])) {
    $User_Number = $_GET['number'];
    $Actual_Number = $_SESSION['higherlower'];
    if ($_SESSION['tries'] <= 0) {
        die("Oops! You're bad at this!");
    }

    if ($User_Number < $Actual_Number) { echo "Higher"; $count + 1; Display_Form(); }
    elseif ($User_Number > $Actual_Number) { echo "Lower"; $count + 1; Display_Form(); }
    elseif ($User_Number == $Actual_Number) { echo "Bingo, Correct Guess!<br>"; Start_Again(); }
    $_SESSION['tries']--;
    echo $_SESSION['tries'] . 'chances left';

} elseif (!isset($_POST['higherlower'])) {
    Start_Again();
}