2013-05-04 2 views
0

Я работаю над созданием сценария Dungeon с PHP. По существу то, что я пытаюсь выполнить, это создать таблицу 10 x 10, которая отобразит набор переменных, которые определяются случайным числом. Я уже много лет отбивался от этого, безрезультатно. Надеюсь, кто-то там может дать мне руку и указать мне в правильном направлении.Невозможно правильно настроить таблицу PHP. PHP Dungeon

<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> 
+0

для получения данных из использования функции этого 'списка ($ emptyRoom, $ сокровище $ монстр, $ ловушки) = populateRoom(); печать "$ emptyRoom, $ сокровище, $ монстра, $ ловушки"; ' – conquistador

+0

Что значит не повезло? Каков текущий выход? В чем проблема? Что вы пытались решить? Быть конкретной. –

ответ

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; 
} 

, чем вы можете отобразить это значение в вашей таблице: Примечание: всегда старайтесь избегать написания html-кода в ваших тегах PHP. это делает код запутанным и грязным. вы всегда Шоуда сделать код чистым для других программистов, которые могут быть в будущем могут работать над этим, и это будет сделать проще для них, чтобы читать:

<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> 

Выход: enter image description here

Я считаю, что это то, что вы пытаетесь достичь:

Примечание: Существует определенно лучший и более эффективный способ этого. Это хорошо для начала.

Dins

+0

Спасибо, Dins! Я очень ценю это и за все советы! –

Смежные вопросы