0

我正在开发一个小型骰子游戏,只是为了好玩,不明白如何解决以下问题:

问题是每次掷骰子时都应该输入一个数字(只有数字 1)

一旦完成,程序将输出一个骰子的 svg 图像,显示一个介于 1 和 6 之间的随机数。您将获得任意数量的运行,直到您达到骰子值 1。此时游戏将终止,您的总分将被评估。

我遇到的问题是该程序仅评估获得的最新点。不过,我似乎真的无法修复它。

表格

$form = <<< EOD
<div>
<form action='{$_SERVER['PHP_SELF']}' method='get'>
    <fieldset>
        <input type='text' name='antal' value='{$antal}' />
        <button type='submit'>Kasta</button>

    </fieldset
</form>
<a href='{$_SERVER['PHP_SELF']}'>Starta om</a>
</div>
EOD;

进行随机掷骰子的函数

class CDice {  
private $iLastThrows = Array();

public function Roll() {
    return rand(1,6);
}

public function RollRepeatedly($aNumber) {
    $this->iLastThrows = Array();
    for($i=1; $i<=$aNumber; $i++) {
        $this->iLastThrows[$i] = $this->Roll(); 
    }    
    return $this->iLastThrows;
}

public function GetLastThrows() {
    return $this->iLastThrows;
}
}

这是显示正确 svg 骰子的功能,我删除了 svg 代码。每个 GetDice1、2、3 对应一个包含 svg 代码的函数。 公共函数 GetSvg($aDice) {

    $html = $this->GetSvgHeader();

    switch($aDice) {
        case '1': $html .= $this->GetDice1(); break;
        case '2': $html .= $this->GetDice2(); break;
        case '3': $html .= $this->GetDice3(); break;
        case '4': $html .= $this->GetDice4(); break;
        case '5': $html .= $this->GetDice5(); break;
        case '6': $html .= $this->GetDice6(); break;    
    }

    $html .= "</svg>";

    return $html;
}

这就是我评估 TOTAL 的方式,它无法正常工作。

public function Total($anArray) {

    foreach($anArray as $key => $value){
        return array_sum($anArray);
    }
}

$antal = filter_input(INPUT_GET, 'antal', FILTER_VALIDATE_INT);

if($antal) {

$dice->RollRepeatedly($antal);
//$slag = $dice->iLastThrows;
$slag = $dice->GetLastThrows();
$total    = $histogram->Total($slag, 1);

// Show all dices as Svg
foreach($slag as $key => $value) {
    $diceHtml .= $dice->GetSvg($value);
}
// Present the result in text'

最后,我检查该值以确保一旦达到 1,我将结束程序

if($value != 1){
$html
{$form}
{$diceHtml}
}

else{
$html = <<<EOD
    <div>
        <p>Game over.</p>
        <p>You threw a ONE.</p>
        <p>Total points: {$total}</p>
    <div>
    {$diceHtml}
    </div>
EOD;
4

0 回答 0