나는 1과 100 사이의 무작위 ($secretNumber
) 번호를 제기, 화면에 인쇄, 사용자가 버튼을 사용하여 양식을 인쇄하는 "높은" 'lower'또는 'correct'. 버튼을 누르면 외부 값이 그에 따라 변경되고 컴퓨터는 가장 낮은 값과 가장 높은 값 사이에서 다른 임의의 숫자를 발생시킵니다. 이것은 사용자가 올 바르고 게임이 재설정 될 때까지 계속됩니다. 버튼을 클릭 할 때마다 값이 재설정되지 않도록 세션을 사용하고 있습니다. 내 문제는 $_SESSION
이 잠기기 전에 $secretNumber
이 몇 번 리셋된다는 것입니다. $randomGuess
또한 업데이트 전에 잠그지 않는 것 같습니다.번호 추측 게임 PHP는 functoning
이것이 작동하지 않는 이유에 대한 의견이 있으십니까?
<?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/>";
?>
감사합니다. 나는 'global $ secretNumber;'를 추가했습니다. secretNumber() 함수와 var_dump에 표시된 값을 통해 전달 된 값을 비교합니다. 그러나 프로그램이 처음 실행될 때 $ secretNumber의 값은 첫 x 째 단추 누를 때 변경됩니다. random 버튼의 값은 높거나 낮은 버튼을 눌렀을 때 통과하지 않지만 $ low 또는 $ high에 놓인 값은 다음 추측입니다. –
많은 시행 착오 끝에 var_dump()를 사용하여 각 단계에서 변수의 값을 확인한 후 randomGuess()에 함수 호출을 추가하여 '낮음'또는 '높음'버튼을 누른 후 다른 추측을하도록했습니다. 정확한 추측이 인식되었을 때 리셋을 추가 할 수 있습니다. 트릭은 프로그램을 통해 각 변수의 값을 따르는 것뿐만 아니라 약간의 측면적인 사고였습니다. –