php прогрессивная генерация карт - PullRequest
3 голосов
/ 02 сентября 2011

Здравствуйте. Я пару дней пытался написать скрипт для генерации прогрессивной карты с использованием PHP. То, что я пытаюсь достичь, но безуспешно, будет примерно так: enter image description here

Короче говоря, у меня есть "узел", определенный как 5,6 на xy (в качестве примера), затем случайным образом добавляем случайное число "игроков" рядом с "узлом". Отсюда я хочу подключить ближайшего «проигрывателя» к узлу, имея список критериев, которые будут определять, к какому узлу будет подключен «проигрыватель» (сколько подключений для этого узла, какое максимальное количество подключений и т. Д.) , Я еще не написал ни одного кода, потому что я не знаю точно, с чего начать и с чего начать, потому что я не очень хорош с математикой, только с PHP очень хорошо. Энди идеи или советы любая помощь приветствуется.

Ответы [ 2 ]

1 голос
/ 22 сентября 2011

Ну, я думаю, что вы хотите создать топологию сети, имея в качестве root интернет-провайдера.

Итак, я думаю, что лучший способ - это создать график.Корень - красная точка.Чем игроки привязаны к нему.Чем игроки привязаны к уже прикрепленным игрокам и т. Д.

примерно так:

            *
         /  |  \
         O  O   O
       / |  |    |
      O  O  O    O

сейчас.С каждым узлом графа может быть связана некоторая информация: type: player |координирование узла: 5 координаты: 6 и т. д. *

Отображение карты будет означать, что вы можете ходить по дереву и рисовать элементы, основываясь на их положениях, вы можете рисовать линии на основе соединений.

Если ваша топология состоит из циклов, то есть игрок1 подключен к игроку2, который подключен к игроку3 ..... игрок n, который подключен к игроку1, тогда вам понадобится графическая структура.

Если я описал правильноваша проблема, чем вы должны найти некоторые статьи о алгоритме дерева / графа, как их анализировать и т. д. и должны быть в состоянии выполнять свою работу.

1 голос
/ 04 сентября 2011

Я сделал игровую доску 10 х 10 с устранением взаимодействующих цветов.

Я использую массив, чтобы сначала определить сетку. Ниже создается массив с 100 слотами для объектов.

SAMPLE: игра на http://apps.facebook.com/AnotherGrid/ Просто войдите в систему, чтобы играть и увидеть сетку в действии. Этот массив генерирует 1000 сеток для моей игры динамически.

<?php
$lvl = array(
/* row0 */' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
/* row1 */' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
/* row2 */' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
/* row3 */' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
/* row4 */' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
/* row5 */' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
/* row6 */' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
/* row7 */' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
/* row8 */' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
/* row9 */' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '
);
?>

тогда я использовал:

foreach ($lvl as $key => $value) {
echo '<div class="grid" id="'.$key.'"onclick="null">'.$value.'</div>';
}

, чтобы написать сетку, и использовать CSS, чтобы определить display: inline-block для каждого div.

Позиционирование каждого основано на положении объекта массива.

будет самым первым квадратом до 99.
<?php
$lvl = array(
/* row0 */'black', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
/* row1 */' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
/* row2 */' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
/* row3 */' ', ' ', ' ', ' ', 'yellow', ' ', ' ', ' ', ' ', ' ',
/* row4 */' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
/* row5 */' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
/* row6 */' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
/* row7 */' ', ' ', ' ', 'blue', ' ', ' ', ' ', 'green', ' ', ' ',
/* row8 */' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
/* row9 */' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '
);
?>
...