묻고답하기
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
''submit''버튼을 클릭하면 클릭횟수 나타내기
2004.10.08 16:32
http://yournet.mireene.com/bbs/mola/num/number.php숫자추측게임 소스인데요
랜덤하게 나오는 숫자를 알아맞추는 소스같아요
화면에 있는 Play!버튼을 클릭할때마다 클릭한 횟수(카운트)가 빈 텍스트박스에 나타나게 하고 싶거든요
소스를 어떻게 하면 되는지 좀 알려주시면 감사하겠습니다
왕초보라 자세히 좀 알려주세요
아래는 소스이고 데모사이트는 링크했습니다
=============================================================================
<hr>
<?php // AND THIS LINE
echo"<p align='center'>";
echo"<font face='$fontface' size='4'><b>";
echo"Number Guess";
echo"</b></font>";
echo"</p>";
echo"<p align='left'>";
echo"<font face='Verdana' size='3'>";
if ($to_do != "play") {echo"Enter a number between 1 and $max to play.";}
if ($to_do == "play" ){
$number = rand(1,$max);
$guess = HTMLSpecialChars($guess);
if ($guess>$max) {
echo "Sorry, the number you entered was more than $max. Please enter a number between 1 and $max. ";
echo "The correct number this time was <b>$number</b>. You guessed <b>$guess.</b>";
}
elseif ($guess>$number) {
echo "Sorry, your guess is too high.<br>";
echo "The correct number this time was <b>$number</b>. You guessed <b>$guess.</b>";
}
if ($guess=="") {
echo"You forgot to enter a number. If you had entered <b>$number</b>, you would have won. ";
}
if ($guess<$number) {
echo "Sorry, your guess is too low.<br>";
echo "The correct number this time was <b>$number</b>. You guessed <b>$guess.</b>";
}
if ($guess == $number) {
echo "Congratulations! You guessed correctly! The number was <b>$number</b>.";
won();
}
}
echo"</font></p>";
echo"<form method='post' action='$PHP_SELF'>";
echo"<input type='hidden' name='to_do' value='play'>";
echo"<p align='center'>";
echo"<font face='$fontface' size='3'>";
if ($to_do == "play") {echo"Play again?";}
if ($to_do != "play") {echo"Enter your guess:";}
echo"<br><br>";
echo"<input name='guess' type='text' value='$guess'><br>";
echo"<input type='submit' value='Play!'>";
echo"</font></p>";
echo"</form>";
starsol();
// ENTER ALL HTML YOU WANT BELOW THE NUMBER GUESS BETWEEN THIS LINE ?>
<hr>
<?php // AND THIS LINE
function won(){
global $fontface;
echo"<font face='$fontface' size='3'><b>Congratulations! You guessed correctly!</b></font>";
include('number_won.php');
return;
}
function starsol(){
global $fontface, $version;
echo"<br><br><center><font face='Verdana' size='1' color='#888888'>Powered by: <a href='http://www.starsol.co.uk/scripts/' target='_blank'>Starsol</a> Number Guess $version</font></center>";
return;
}
?>
랜덤하게 나오는 숫자를 알아맞추는 소스같아요
화면에 있는 Play!버튼을 클릭할때마다 클릭한 횟수(카운트)가 빈 텍스트박스에 나타나게 하고 싶거든요
소스를 어떻게 하면 되는지 좀 알려주시면 감사하겠습니다
왕초보라 자세히 좀 알려주세요
아래는 소스이고 데모사이트는 링크했습니다
=============================================================================
<hr>
<?php // AND THIS LINE
echo"<p align='center'>";
echo"<font face='$fontface' size='4'><b>";
echo"Number Guess";
echo"</b></font>";
echo"</p>";
echo"<p align='left'>";
echo"<font face='Verdana' size='3'>";
if ($to_do != "play") {echo"Enter a number between 1 and $max to play.";}
if ($to_do == "play" ){
$number = rand(1,$max);
$guess = HTMLSpecialChars($guess);
if ($guess>$max) {
echo "Sorry, the number you entered was more than $max. Please enter a number between 1 and $max. ";
echo "The correct number this time was <b>$number</b>. You guessed <b>$guess.</b>";
}
elseif ($guess>$number) {
echo "Sorry, your guess is too high.<br>";
echo "The correct number this time was <b>$number</b>. You guessed <b>$guess.</b>";
}
if ($guess=="") {
echo"You forgot to enter a number. If you had entered <b>$number</b>, you would have won. ";
}
if ($guess<$number) {
echo "Sorry, your guess is too low.<br>";
echo "The correct number this time was <b>$number</b>. You guessed <b>$guess.</b>";
}
if ($guess == $number) {
echo "Congratulations! You guessed correctly! The number was <b>$number</b>.";
won();
}
}
echo"</font></p>";
echo"<form method='post' action='$PHP_SELF'>";
echo"<input type='hidden' name='to_do' value='play'>";
echo"<p align='center'>";
echo"<font face='$fontface' size='3'>";
if ($to_do == "play") {echo"Play again?";}
if ($to_do != "play") {echo"Enter your guess:";}
echo"<br><br>";
echo"<input name='guess' type='text' value='$guess'><br>";
echo"<input type='submit' value='Play!'>";
echo"</font></p>";
echo"</form>";
starsol();
// ENTER ALL HTML YOU WANT BELOW THE NUMBER GUESS BETWEEN THIS LINE ?>
<hr>
<?php // AND THIS LINE
function won(){
global $fontface;
echo"<font face='$fontface' size='3'><b>Congratulations! You guessed correctly!</b></font>";
include('number_won.php');
return;
}
function starsol(){
global $fontface, $version;
echo"<br><br><center><font face='Verdana' size='1' color='#888888'>Powered by: <a href='http://www.starsol.co.uk/scripts/' target='_blank'>Starsol</a> Number Guess $version</font></center>";
return;
}
?>
댓글 10
-
겜방
2004.10.09 00:51
-
선우
2004.10.09 01:27
이 부분을 어디에 넣어야 하죠? -
겜방
2004.10.09 01:32
<?
//이 부분은 페이지 맨 위에 넣고요.
session_start();
if($_POST["to_do"])
$_SESSION["cnt"] = $_SESSION["cnt"] + 1;
?>
카운트수를 출력하고자 하는 부분에 아래 부분을 넣어주면 되겠죠.
<?=$_SESSION["cnt"]?> -
선우
2004.10.09 01:35
Parse error: parse error, unexpected '\"', expecting T_STRING or T_VARIABLE or T_NUM_STRING
위처럼 에러가 나는데요? -
겜방
2004.10.09 01:52
다른 부분에서 나는 에러 같은데요.
혹시 모르니 <?=$_SESSION["cnt"]?> 을 <?=$_SESSION["cnt"];?> 로 해보세요. -
선우
2004.10.09 01:55
구문오류 Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ',' or ';'
이런 에러도...제가 지금 이렇게,저렇게 해 보는 중입니다 -
선우
2004.10.09 02:01
혹시 원래 소스하고 겜방님이 알려주신 소스가 문법 같은게 달라서 그런거 아닐까요? -
선우
2004.10.09 02:07
흐음...뭔가 문제가 있는것 같아요
<?=$_SESSION["cnt"]?>이 부분만 빼고
맨 위에 <?
//이 부분은 페이지 맨 위에 넣고요.
session_start();
if($_POST["to_do"])
$_SESSION["cnt"] = $_SESSION["cnt"] + 1;
?>
이걸 넣었더니 구문오류는 안나는데 랜덤하게 출력되는 숫자가 안나오고 클릭을 해도
화면이 변함이 없는걸 보니 클릭할 때마다 reload가 동시에 되는 소스같아요 -
선우
2004.10.09 02:10
전에 다른 분이 코멘트해 준게 있는데 이건 어떤지 좀 봐주세요
어떻게 하라는건지 몰라서 안해 본건데요 이렇게도 가능한건지요....
echo"<input type='hidden' name='to_do' value='play'>";
밑에 다음처럼 하나 추가하고요.
echo"<input type='hidden' name='hit_no' value='0'>";
재실행될때마다 $hit_no값을 1씩 더해주면 되겠죠.
버튼이나 그런데 출력할려면 역시 $hit_no 값을 출력하면 되고요..... 방법이야 어떠하든 클릭횟수에 대한 변수(form element)하나 마련해서 그걸 관리하면 됩니다.. -
겜방
2004.10.10 21:43
간단한 코드 작성해봤는데, 테스트 해보시고, 참고하세요.
지금 겜방이라서 컴파일은 안 해봤는데, 아마 에러 안 날거에요.
<?
$max = 100; // 최대값 설정
// 폼에서 보낸 값 받기
$cnt = $_POST["cnt"];
$num = trim($_POST["num"]);
// 숫자가 아니거나, 1보다 작은경우, 100보다 큰 경우에는 에러 메세지 출력
if(!is_Numeric($num) || $num < 1 || $num > $max)
echo "1에서 $max 사이의 수를 넣어주세요.";
else
{
// 1에서 $max 사이의 랜덤값 구하기.
$rand = mt_rand(1, $max);
// $num 과 $rand 값 비교.
if($num == $rand)
echo "<font color=red>랜덤값(" . $rand . ")과 일치합니다.</font>";
else
echo "랜덤값(" . $rand . ")과 일치하지 않습니다.";
// 게임 횟수 증가하기
$cnt = $cnt + 1;
}
?>
<FORM METHOD=POST ACTION="<?=$_SERVER["PHP_SELF"];?>">
<INPUT TYPE="hidden" NAME="cnt" VALUE="<?=$cnt?>">
예상 값: <INPUT TYPE="text" NAME="num" VALUE="<?=$num?>"><P>
게임 횟수: <?=$cnt?> 회<P>
<INPUT TYPE="submit" Value="Play Game">
</FORM>
submit할 때에만 - 페이지를 reload할 때는 제외하고 - 카운트를 늘릴 거니까
히든값으로 보내지는 "to_do" 라는 변수값이 있을 때에만 세션값을 증가시켜주면 되겠네요.
<?
session_start();
if($_POST["to_do"])
$_SESSION["cnt"] = $_SESSION["cnt"] + 1;
?>
<input type=text name="" value="<?=$_SESSION["cnt"]?>">