0

私は楽しみのために小さなサイコロゲームに取り組んでおり、次の問題を解決する方法がわかりません:

問題は、サイコロを振るたびに数字を入力する必要があることです (数字の 1 のみ)。

それが完了すると、プログラムは 1 から 6 までの範囲の乱数を表示するサイコロの svg 画像を出力します。サイコロの値が 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 コードを含む関数に対応します。 public function 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