3

您好几天来,我一直在尝试编写一个脚本来使用 PHP 生成渐进式地图。我想要实现但没有成功的事情是这样的: 在此处输入图像描述

简而言之,我在 xy 上定义为 5,6 的“节点”(例如),然后随机添加靠近“节点”的随机数量的“玩家”。从这里我想将最近的“播放器”连接到节点,同时拥有一个标准列表,该列表将确定“播放器”将连接到哪个节点(该节点有多少连接,最大连接数是多少等) . 我还没有编写任何代码,因为我不知道从哪里开始或应该从什么开始,因为我对数学不是很好,只对 PHP 很好。欢迎安迪的想法或建议任何帮助。

4

2 回答 2

1

好吧,我认为您想创建网络拓扑,以互联网提供商作为根。

所以,我认为最好的方法是创建一个图表。根是红点。比依附于它的玩家。比附加到已经附加的球员等等的球员。

像这样的东西:

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

现在。图的每个节点都可以有一些与之相关的信息: type: player | 节点 coordX : 5 coordY: 6 等等...

显示地图仅意味着您可以在树上行走并根据元素的位置绘制元素,您可以根据连接绘制线条。

如果您的拓扑包含循环,即 player1 连接到 player2,player2 连接到 player3 ..... player n 连接到 player1,那么您需要一个图形结构。

如果我正确地描述了您的问题,那么您应该找到一些关于树/图算法、如何解析它们等的文章,并且应该能够完成您的工作。

于 2011-09-22T15:30:11.517 回答
1

我制作了一个 10 x 10 的游戏板,带有交互消色功能。

我使用数组首先定义网格。下面创建一个包含 100 个对象槽的数组。

示例: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。

对于每一个的定位都是基于数组对象的位置。< div id="0" > 将是第一个到 99 的正方形。

<?php
$lvl = array(
/* row0 */'black', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
/* row1 */' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
/* row2 */' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
/* row3 */' ', ' ', ' ', ' ', 'yellow', ' ', ' ', ' ', ' ', ' ',
/* row4 */' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
/* row5 */' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
/* row6 */' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
/* row7 */' ', ' ', ' ', 'blue', ' ', ' ', ' ', 'green', ' ', ' ',
/* row8 */' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
/* row9 */' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '
);
?>
于 2011-09-04T00:40:55.927 回答