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 的好处是不需要在客户端和服务器之间通过 Internet 传递信息。

于 2012-10-01T16:49:31.980 回答
0

$attempts始终等于 1,因为它不在循环内,它在最后声明,您只是在其现有值 (0) 上加 1。你需要把它放在合适的地方(就在{我认为的最后一个上面),它应该可以工作。

此外,您似乎使用不同的方法来添加一个,例如$black + 1and $attempts += 1;。使用 $variable++,它更容易理解并阻止由此产生的任何错误。

于 2012-10-01T16:48:37.400 回答