PHP Beginner - промежуточный итог

1

Поэтому я решил попробовать и забрать PHP и после завершения некоторых онлайн-курсов и т.д. У меня есть основы в какой-то степени.

Я пытаюсь проверить себя, сделав простую игру.

В игре вы делаете ставку на количество кредитов и генерируется случайное число от 1 до 100, если число превышает 60, вы получаете вдвое больше того, что вы делаете, если ниже 60 вы теряете сумму, которую вы ставите.

Я застрял, создав общее количество, и был бы очень признателен за любые советы.

Код ниже (извинения за плохо написанный код: P)

   <?php
$rand = rand(1,100);
$usrBet = $_POST['usrBet'];
$usrCredit = 1000;

if ($rand > 60) {
$usrCredit = ($usrCredit - $usrBet) + ($usrBet * 2);
echo "Your Bet : " ,$usrBet;
echo "<br>";
echo "The Banker Rolled : " ,$rand;
echo "<br>";
echo "You Win";
echo "<br>";
echo "Current Credits : " ,$usrCredit;
} else {
$usrCredit = $usrCredit - $usrBet;
echo "Your Bet : " ,$usrBet;
echo "<br>";
echo "Aww Snap! you loose!";
echo "<br>";
echo "The Banker Rolled : " ,$rand;
echo "<br>";
echo "Current Credits : " ,$usrCredit;
}

?>

    <form action="dicegame.php" method="post">
    <INPUT TYPE = "Text" VALUE ="Please Enter Your Bet" NAME = "usrBet" placeholder="Please Enter Your Bet">
    <p><input type="submit" /></p>
    </form>
  • 0
    редактировать. Я хочу, чтобы пользователь начал с 1000 кредитов, математика работает, но каждый раз, когда вы вводите сумму, которая сбрасывается до 1000 кредитов, спасибо заранее
  • 0
    Вам нужно будет использовать сессии для этого. tizag.com/phpT/phpsessions.php php.net/manual/en/intro.session.php Альтернативно, вы можете передать текущий уровень кредита пользователя в виде скрытого поля ввода в форме. Это может быть изменено пользователями.
Показать ещё 9 комментариев
Теги:

2 ответа

0
Лучший ответ

Я попытался добавить некоторые функции, чтобы вы могли искать таким образом. Как сказано, $ _SESSION решит pbm.

<?php
session_start();
?>
<!DOCTYPE html>
<html>
<head>
<script>
    <!-- Some few lines of JS - to disable characters input -->
    function isNumberKey(evt)
    {
        var charCode = (evt.which) ? evt.which : event.keyCode
        if (charCode > 31 && (charCode < 48 || charCode > 57))
            return false;
        return true;
    }    
</script>
   </head>
    <body>

   <!-- U'll to re-edit the target of the form + changed type to number for input -->
    <form action="7.php" method="post">
        <input type="number" name="usrBet"  value="Plz Enter Your Bet"
               placeholder="Plz Enter Your Bet" onkeypress="return isNumberKey(event)">
        <br>
        <input type="submit" value="Submit">
    </form>
</body>
</html>
<?php

// Check if user entered a value
if (isset($_POST['usrBet']))
{
    if($_POST['usrBet'] == '')
    $usrBet = 0;
else
    $usrBet = $_POST['usrBet'];

$rand = rand(1,100);

if(!isset($_SESSION['usrCredit']))
        $_SESSION['usrCredit'] = 1000;
if($rand > 60)
{
    $_SESSION['usrCredit'] = ($_SESSION['usrCredit'] - $usrBet) + ($usrBet * 2);
    echo "Your Bet : " . $usrBet;
    echo "<br>";
    echo "The Banker Rolled : " . $rand;
    echo "<br>";
    echo "You Won";
    echo "<br>";
    echo "Current Credits : "  . $_SESSION['usrCredit'];
} 

else
{
    $_SESSION['usrCredit'] = $_SESSION['usrCredit'] - $usrBet;

    echo "Your Bet : " . $usrBet;
    echo "<br>";
    echo "Aww Snap! you lost!";
    echo "<br>";
    echo "The Banker Rolled : " . $rand;
    echo "<br>";
    echo "Current Credits : " . $_SESSION['usrCredit'];
}
}
?>
2

Вы должны использовать сеанс для хранения данных, чтобы счет не сбрасывался

Для использования сеанса вы должны начать сеанс следующим образом:

session_start();

после этого вы должны проверить это, если значение назначено в сеансе, если нет, это означает, что у пользователя есть его первая попытка, поэтому мы будем кредитовать 1000 очков при начале сеанса, как это

if(!isset($_SESSION['userCredits'])){
  $_SESSION['userCredits'] = 1000;
}

и когда пользовательские кредиты обновляются, мы должны обновить его в сеансе так, чтобы это было

$_SESSION['userCredits'] = $usrCredit;

если пользователь пришел первым на странице, мы не хотим сначала дать результат, поэтому проверьте, является ли форма сообщением при запуске такого условия.

if(isset($_POST['usrBet'])){
 // PHP CODE
}

после этого окончательный код будет выглядеть следующим образом:

<?php
session_start();

if(!isset($_SESSION['userCredits'])){
      $_SESSION['userCredits'] = 1000;
}


if(isset($_POST['usrBet'])){

    $rand = rand(1,100);
    $usrBet = $_POST['usrBet'];
    $usrCredit = $_SESSION['userCredits'];

    if ($rand > 60) {
        $usrCredit = ($usrCredit - $usrBet) + ($usrBet * 2);
        echo "Your Bet : " ,$usrBet;
        echo "<br>";
        echo "The Banker Rolled : " ,$rand;
        echo "<br>";
        echo "You Win";
        echo "<br>";
        echo "Current Credits : " ,$usrCredit;
    } else {
        $usrCredit = $usrCredit - $usrBet;
        echo "Your Bet : " ,$usrBet;
        echo "<br>";
        echo "Aww Snap! you loose!";
        echo "<br>";
        echo "The Banker Rolled : " ,$rand;
        echo "<br>";
       echo "Current Credits : " ,$usrCredit;
    }

    $_SESSION['userCredits'] = $usrCredit;

}

?>

<form action="dicegame.php" method="post">
    <INPUT TYPE = "Text"  NAME = "usrBet" placeholder="Please Enter Your Bet">
    <p><input type="submit" /></p>
</form>

Вы можете добавить к нему больше условий. Надеюсь, это поможет

  • 1
    Огромное спасибо всем! очень признателен
  • 1
    @JackGalway Этот ответ работает и для того, чтобы пометить вопрос как решенный, а также проинформировать всех в стеке о том, что решение было решено, означает принять ответ. Вот как meta.stackexchange.com/questions/5234/… затем вернитесь к ответу и сделайте то же самое с галочкой, пока она не станет зеленой.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню