【问题标题】:I need to write a program for my class will keep score of a bowling game我需要为我的班级编写一个程序来记录保龄球比赛的得分
【发布时间】:2015-02-16 20:26:41
【问题描述】:

我需要编写一个 PHP 程序来记录保龄球比赛的得分。我可以处理不是问题的分数的计算。我的问题是首先将数据放入数组中。

我的想法是为每个玩家设置一个数组,如下所示:

$scores = array(
array(
    'name' => 'Player 1',
    'sheet' => '10,10,10,10,10,10,10,10,10,10,10,10'
),
array(
    'name' => 'Player 2',
    'sheet' => '10,10,10,10,10,10,10,10,10,10,10,10'
),

);

我想要一个初始表格,您可以在其中输入球员姓名,然后创建数组,然后为每个球员(数组)创建另一个表格以输入分数。

最好的方法是什么?

谢谢

编辑:这行得通吗?

<input maxlength="30" name="players[1][player1]" size="30" type="text" />
<input maxlength="30" name="players[2][player2]" size="30" type="text" />

所以上面显示的第一个表单将创建数组和玩家名称值。像下面这样的第二种形式会添加分数,虽然我似乎无法让它工作。

<input maxlength="30" name="players[1][score]" size="30" type="text" />
<input maxlength="30" name="players[2][score]" size="30" type="text" />

【问题讨论】:

  • 您将需要某种持久性,例如会话、文件方案或数据库。
  • 我不确定会话如何解决这个问题,你能解释一下吗?我已经解决了这个问题,以展示一个可能的解决方案,看看这是否可行。
  • 不清楚是要在所有帧都知道后计算游戏结束时的分数,还是要在每帧后计算跑分。
  • 抱歉,我会在比赛结束时计算分数。

标签: php arrays


【解决方案1】:

这是一个小例子。也许有问题,但它应该可以工作(以获得灵感)

<h1>Bowling</h1>

<?php

if ( isset ( $_POST['next'] ) ) {

  if ( isset ( $_POST['players'] ) ) {

    $exp = explode("\n", trim($_POST['players']));
    echo "<h2>Input Score</h2>";

    echo '<form method="post" action="bowling.php">';
    foreach ( $exp as $p ) {
    if ( trim($p) != '') {
      $name = trim(htmlspecialchars($p));
      echo '<fieldset>';
      echo '<label><h3>Input "' .$name.'" score</h3></label>';
      echo '<input style="width:100%" type="text" name="score[]" placeholder="Put in the score for ' . $name . '. Just for example 1 2 3 4 5">';
      echo '<input type="hidden" name="player[]" value="'.$name.'">';

      echo '</fieldset>';
    }
    }
    echo '<input type="submit" name="next" value="Results">';
    echo '</form>';
  }

  if ( isset($_POST['score'], $_POST['player']) ) {
    echo "<h2>Results</h2>";
    $i = 0;
    $result = [];
    foreach ( $_POST['player'] as $name ) {
      $result[$name] = $_POST['score'][$i];
      $i++;
    }

    var_dump($result);
  }


} else {
?>
<form method="post" action="bowling.php">
<textarea style="width:500px; height:500px;" name="players" placeholder="One player in each line and everything will be fine"></textarea>
<input name="next" type="submit">
</form>
<?php
} ?>

【讨论】:

  • 需要一些持久存储
  • 谢谢你。我喜欢你所做的。我尝试对其进行修改,以便在每个玩家按下提交时输入他们的分数,然后表单再次出现,您输入下一个表单,依此类推,因此它会不断更新数组,直到他们完成为止。但我似乎无法让它工作。你知道我该怎么做吗?我只想让表单真正循环并不断更新数组
  • 只需将这两个部分组合起来并一直循环直到游戏结束(为其添加另一个输入字段)。
猜你喜欢
  • 1970-01-01
  • 2012-04-23
  • 1970-01-01
  • 1970-01-01
  • 2011-04-23
  • 1970-01-01
  • 2020-07-28
  • 2013-06-26
  • 2016-06-03
相关资源
最近更新 更多