Игра угадывания чисел PHP не функционирует

Я пытаюсь написать PHP-игру, которая поднимает случайный ($secretNumber) число от 1 до 100, выводит его на экран, печатает форму с кнопками, чтобы пользователь мог выбрать «выше», «ниже» или «правильно». После нажатия кнопки внешние значения изменяются соответственно, и компьютер выдает другое случайное число между самым низким и самым высоким значениями. Это продолжается до тех пор, пока пользователь не выберет правильный и игра не будет сброшена.
Я использую сеанс, чтобы гарантировать, что значения не сбрасываются при каждом нажатии кнопки.
Моя проблема в том, что $secretNumber сбрасывает пару раз до $_SESSION запирает это.
Так же $randomGuess кажется, не блокируется перед обновлением.

Любые предложения относительно того, почему это не работает?

<?php session_start() ?>

<?php
$low = 1;
$high = 100;
//create a function to hold a random number, between 1 and 100  and save it
//to a session variable.
secretNumber();

function secretNumber(){ //********** secretNumber() **********
global $randomGuess;
if(!isset($_SESSION["secretNumber"])){
$secretNumber = rand(1,100);
$_SESSION['secretNumber'] = $secretNumber;
} else {
$secretNumber = $_SESSION["secretNumber"];
echo($_SESSION['secretNumber']);
}

echo 'Secret number is '.$secretNumber;
echo '  <br/>  ';
}                   //********** end secretNumber() ***********

//create a function to create a random guess as to the value of the
//first random number

randomGuess();

function randomGuess() { //********** randomGuess() **********
global $randomGuess;
global $low;
global $high;

if (isset($_SESSION['low'])){
$low = $_SESSION['low'];
}
if (isset($_SESSION['high'])){
$high = $_SESSION['high'];
}
$randomGuess = round($high-(($high-$low)/2));
echo 'Random guess is '.$randomGuess;
echo "<br/>";
$_SESSION['randomGuess'] = $randomGuess;
}                   // ********** end randomGuess() **********

//create a function to provide a response as to whether the guess is low,
//high or correct, and adjust the limits of the random guess accordingly.

checkGuess();

function checkGuess() { // ********** checkGuess() **********
global $low;
global $high;
global $randomGuess;

// form to show a 'high' button, a 'low' button and a 'correct' button
// Correct button needs to reset $_SESSION["secretNumber"], and start
// process over.

print <<<HERE
<div>
<br/><br/><br/>
<form method = "post" action = ""  style="width:35%;
padding-left:35%">
<fieldset>

<button type = "submit" value="high" name ="high">Too High</button> <br/><br/>
<button type = "submit" value="low" name = "low">Too Low</button> <br/><br/>
<button type = "submit" value="correct" name = "correct">Correct</button> <br/><br/>

</fieldset>
</form>
</div>
HERE;

if (isset($_POST['low'])) {
echo "low <br/>";
echo "randomGuess = ".$randomGuess. "<br/>";
unset($_SESSION["low"]);
$low = $randomGuess;
$_SESSION['low'] = $low;
unset($_SESSION["randomNumber"]);
}
if (isset($_POST['high'])){
echo "high <br/>";
echo "randomGuess = ".$randomGuess. "<br/>";
unset($_SESSION["high"]);
$high = $randomGuess;
$_SESSION['high'] = $high;
unset($_SESSION["randomNumber"]);
}
} //                   ********** end checkGuess() **********

if (isset($_POST['correct'])){
print <<<HERE
<h2>Yes I guessed the correct secret number. Your secret is out</h2>
HERE;
unset($_SESSION["secretNumber"]);// unset the random number as the guess was correct.
unset($_SESSION["high"]);
unset($_SESSION["low"]);
}//end if

echo "low =".$low."<br/>";
echo "high =".$high." <br/>";

?>

2

Решение

Попробуйте проверить, если $secretNumber такой же, как сессия.

var_dump($secretNumber);

if($secretNumber != $_SESSION["secretNumber"]) {
echo "Restart is here";
}

Протестируйте его после каждой функции, и тогда вы увидите, в чем проблема.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector