0

フォームを使用して mastermind のようなゲームを作成しています。私の問題は、変数 $attempts があり、ユーザーが数字を推測するたびに増やしたいのですが、常にゼロにリセットされるように見えるため、試行回数は常に 1 として表示されます。私が使用しているコード:

$black = 0;
$white = 0;
$answer = array(1,2,3,4);
$tries = array();
$attempts = 0;
if ($process == true)
{
$guess = str_split($_POST['guess']);
if ($guess == $answer)
{
    $black = 4;
} else
{
    for ($i=0;$i<4;$i++)
    {
        if ($guess[$i] == $answer[$i])
        {
            $black = $black + 1;
            $white = $white - 1;
        }
    }
    $result = array();
    foreach ($guess as $val)
    {
        if (($key = array_search($val, $answer))!==false)
        {
            $result[] = $val;
            unset($answer[$key]);
        }
    }
    $count = count($result);
    $white = $white + $count;
}
}
$chance = implode(" ",$guess);
$attempts += 1;
$try = $attempts.".".$chance.".".$white.".".$black;
array_push($tries, $try);
4

2 に答える 2

1

あらゆる推測でフォームを送信していますか?その場合は、次のようなセッション変数を設定する必要があります。

$_SESSION['attempts'] += 1;

あなたが行方不明になっているように見える何かを明確にするためだけに。phpスクリプトは、サーバー上で実行され、クライアントに送信されるドキュメント(多くの場合html)を生成するコードです。したがって、リクエスト間であまりインタラクティブではありません。クライアント側でコードを実行する場合は、Javascriptを使用する必要があります。Javascriptには、クライアントとサーバー間でインターネットを介して情報を渡す必要がないという利点があります。

于 2012-10-01T16:49:31.980 に答える
0

$attemptsはループ内にないため、常に1に等しく、最後に宣言され、既存の値(0)に1を追加するだけです。あなたはそれを適切な場所({私が思う最後のすぐ上)に置く必要があり、それはうまくいくはずです。

$black + 1また、やなど、さまざまな方法で追加しているようです$attempts += 1;。$ variable ++を使用すると、理解がはるかに簡単になり、それによって発生するエラーを防ぐことができます。

于 2012-10-01T16:48:37.400 に答える