0

我正在使用 PHP 创建一个 Dungeon 场景。本质上,我试图完成的是创建一个 10 x 10 的表,该表将显示一组由随机数定义的变量。我已经为此苦苦挣扎了很长时间,但无济于事。希望有人可以帮我一把,并指出我正确的方向。

<html>
<head>

<title>The Dungeon</title>
<?php
function populateRoom(){
$randomNumber = rand(1,5); 
$emptyRoom = "O";
$treasure = "$";
$monster = "M";
$trap = "^";

if($randomNumber == 1 || $randomNumber ==2){
    echo "<h1><td>$emptyRoom</td></h1>";}
elseif ($randomNumber == 3){
    echo"<h1><td>$treasure</td></h1>";}
elseif ($randomNumber == 4){
    echo"<h1><td>$monster</td></h1>";}
else{
    echo"<h1><td>$trap</td></h1>";}


return array($emptyRoom,$treasure,$monster,$trap)

?>


</head>

<body>
<h2>The Dungeon</h2>

<?php

echo "<table border=\"1\">";


for ($row=1; $row<=10; $row++){
  echo "<tr>\n";

  for ($col=1; $col<=10; $col++){

   echo "<td>.populateRoom().</td>\n";
  }
  echo "</tr>";
}
echo "</table>";

?>

</body>
</html>
4

1 回答 1

2

你这样做是不对的:

在你的函数中,populateRoom()你试图将你的随机值显示为一个列,<td>而不是你试图返回一个数组。

再次将您的函数称为没有任何意义的表列。

这是修复:从您的函数只返回值.. 这样当函数被调用时,它会返回一个随机值并将其显示为列:

function populateRoom() {
    $randomNumber = rand(1, 5);
    $emptyRoom = "O";
    $treasure = "$";
    $monster = "M";
    $trap = "^";

    // I would prefer to use switch
    if ($randomNumber == 1 || $randomNumber == 2)
        return $emptyRoom;
    elseif ($randomNumber == 3)
        return $treasure;
    elseif ($randomNumber == 4)
        return $monster;
    else
        return $trap;
}

比你可以在你的表中显示这个值: 注意:总是尽量避免在你的 PHP 标记中编写 html 代码。它会使代码混乱和肮脏。对于将来可能从事此工作的任何其他程序员,您应该始终使代码干净,这将使他们更容易阅读:

 <h2>The Dungeon</h2>

<table border="1">
    <?php for ($row = 1; $row <= 10; $row++): ?>
        <tr>
            <?php for ($col = 1; $col <= 10; $col++): ?>
                <td><?php echo populateRoom() ?></td>
            <?php endfor; ?>
        </tr>
    <?php endfor; ?>
</table>

输出: 在此处输入图像描述

我相信这是您想要实现的目标:

注意:肯定有更好,更有效的方法。它对开始有好处。

丁斯

于 2013-05-04T06:26:55.157 回答