我正在开发一个小型骰子游戏,只是为了好玩,不明白如何解决以下问题:
问题是每次掷骰子时都应该输入一个数字(只有数字 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;