Как ограничить действия пользователя в игре выше / ниже - PullRequest
0 голосов
/ 09 мая 2019

Ну, я создал простой скрипт игры выше / ниже. Он работает нормально, но я хочу ограничить действия пользователя до 3. Это означает, что пользователю придется угадывать число с 3 ходами. На третьем действии я выполню запрос и сохраню пользователя в mysql. Как я могу ограничить свои действия / ходы?

<?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(); }
?>

Ответы [ 2 ]

1 голос
/ 09 мая 2019

Когда вы инициализируете игру, просто сохраните количество попыток в вашей сессии.

$_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();
}
0 голосов
/ 09 мая 2019

Вы уже запускаете сеанс, поэтому вы можете сохранить значение в переменной сеанса, например, $ _SESSION ['count'];

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

Позже в коде вам потребуется обновить счетчик $_SESSION['count']++; И проверь, не использовал ли человек все догадки

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