2016-08-26 3 views
1

私はハングマンゲームを作ろうとしています。それは正常にランダムな単語を選択しますが、送信ボタンが押されるたびに単語が変わります、どうすればこれを止めることができますか?私のコードは次のようになりますハングマンPHPが、私のサブミットが押されるたびに私の言葉が変わります。

<html> 
<head> 
<title> Hangman </title> 
</head> 
<body> 
<h1> Hangman <h1> 
<?php 
session_start(); 
$maxAttempts = 6; 
$letters = array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o', 
'p','q','r','s','t','u','v','w','x','y','z'); 
?> 
<form name="lettersubmit" method="post" action="Hangman.php" > 
<input name="letterguess" type= "text" value=""> 
<input name="submit" type="submit" value="Guess a Letter!"><br> 
<p> Guesses Remaining <p> 
<input name="triesRemaining" type="text" value="<?php print("$maxAttempts"); ?>"> 
</form> 
<?php 
$letterguess = $_POST["letterguess"]; 

if($letterguess= $word){ 
    echo ("correct"); 
} 
if(!isset($_POST["submit"])){ 
    $words = array (
    "giants", 
    "triangle", 
    "particle", 
    "birdhouse", 
    "minimum", 
    "flood", 

); 
} 
if(isset($_POST["submit"])){ 
    $maxAttempts--; 
} 

$word = $words[array_rand($words)]; 
    echo $words[array_rand($words)]; 
?> 
</body> 
</html> 

他の間違いが気になる場合は、それらを指摘してください。ありがとうZac

+0

セッションを使用します。あなたはそれを始めましたが、単語をセッションに設定する必要があります - '$ _SESSION ['word'] = $ the_word;'そして '$ maxAttempts'をセッションにも保存してください。これは、PHPが実行時に評価されるため、スクリプトが1ページの読み込みごとに「再実行」されるためです。セッションの使用は破壊されるまでデータを保持します。 – Darren

+0

これは、あなたが提出するたびにページを再読み込みすることです(コードがHangman.phpからのものであると仮定して)、あなたのPHPコードが再実行されます。とにかくあなたが[セッション](http://php.net/manual/en/reserved.variables.session.php)または何かにそれを格納しないためにあなたのコードが以前のランダムな単語を知ることができる方法はありません –

答えて

0

あなたがhangman.phpに新しい要求を送るからです(これはあなたが私たちに見せているこのページです)。これにより、ページ全体がリロードされますが、コードを除いて、単語配列が設定されます。使用するランダムな単語を決定するコードは、新しい要求が送信されているかどうかに関係なく実行されます。

最初に実行するコードブロックに追加すると、開始時に単語が選択されます。

if(!isset($_POST["submit"])){ 
    $words = array (
    "giants", 
    "triangle", 
    "particle", 
    "birdhouse", 
    "minimum", 
    "flood", 

    $word = $words[array_rand($words)]; 
); 

これを実行すると、どこかに保存する必要があります。コメントを付けたセッションは、一方向です。あなたのフォームの隠しフィールドは、値を格納する別の(あまり意味のない)方法です。次に、送信を受け取ったときにフォームデータから読み取ることができます。

関連する問題