【问题标题】:php progressive map generationphp渐进式地图生成
【发布时间】:2011-09-02 10:31:18
【问题描述】:

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

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

【问题讨论】:

  • 您是在尝试生成与您展示的图形类似的图形,还是实际创建某种类型的路由机制,该机制的工作原理与该图像上所描绘的一样?
  • 不只是简单游戏的地图。蓝点是玩家,红点是“节点”,你可以想象一个计算机网络,它有一个节点,可以为你提供互联网连接..或与其他用户的网络连接..
  • 使用GDLib函数生成地图图形:php.net/manual/en/ref.image.php
  • Tom 不是要生成地图的图像吗? :-)

标签: php mysql map auto-generate


【解决方案1】:

嗯,我想你想创建一个网络拓扑,以互联网提供商作为根。

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

类似这样的:

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

现在。图的每个节点都可以有一些与之关联的信息: 类型:播放器 |节点 坐标X:5 协调:6 等等……

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

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

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

【讨论】:

  • Dan 我会查看图表算法和任何相关的内容,然后我会回复:-)。是的,这就是我从红点开始寻找的东西,将玩家与红点连接起来(在视觉表示和 xy 地图上,通过选择更接近某个点的点)。
【解决方案2】:

我制作了一个具有交互消色功能的 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。

对于每一个的定位都是基于数组对象的位置。 将是第一个到 99 的正方形。

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

【讨论】:

  • 游戏看起来不错:-)
猜你喜欢
  • 1970-01-01
  • 2019-09-27
  • 2011-03-31
  • 1970-01-01
  • 1970-01-01
  • 2013-01-16
  • 2023-03-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多