2013-07-11 44 views
2

我目前正在为使用objective-c的iOS开发塔防游戏,并且遇到问题,只要为每个级别生成随机路径。经过对谷歌的研究,我只发现了贝塞尔路径生成器,这不是我正在寻找的。我基本上需要一种算法来生成用直线相互连接的随机路点。为塔防游戏生成路标

# * * * #///// 
//// */# * #/  
//// */*/*/
/# * * #/*/*/
/*//// */*/
/# * * * * #/*/
//////// # # 

以上是什么我需要,所有的航点(#)相互垂直或水平连接,因此所得到网格具有直链,连接线的很好的例子。任何帮助都会很棒。谢谢。

+0

为什么你想要它是随机的?那么你无法控制它是多么的容易/困难。 – Wain

+0

研究迷宫生成算法:http://en.wikipedia.org/wiki/Maze_generation_algorithm http://stackoverflow.com/questions/38502/whats-a-good-algorithm-to-generate-a-maze http:/ /flashgamedojo.com/wiki/index.php?title=Fathom's_Labyrinth_Algorithm – LearnCocos2D

+0

连接两个航点的线是否可以跨越另一条线? –

回答

0

我相信你正在寻找在很多网站上很好解释的A-Star算法。请参阅说明如何浏览迷宫/地图的教程。

0

你想要什么与maze generation有关。

基本上,你会产生一个迷宫,对于长而直的走廊产生某种偏见,然后丢弃除了从开始到结束的单一路径之外的所有东西。

我不能根据具体情况给予太多,因为你想要的路径和你的游戏主题的种类会严重影响你想要的结果。

也许一个好的开始是某种分形过程。

2

这仅仅是一个非常基本的主意,开始你了:

  • 生成随机点。

  • 通过仅从一个点垂直移动并从另一个点水平移动(有两种方法可以实现这一点),反复连接两个随机点。请参阅示例了解更多详情。

    假设你想要一个非分裂路径,这些选择的点不应该两个已经连接到任何其他点(但一个已经连接好)。

  • 如果您遇到困难(如果您无法将某一点连接到任何事物,或者您已经从头到尾做了一条路径并且有未完成的点)和/或限制您以这种方式选择点的方式以防止/减少卡住的可能性。例如,连接起点和终点不会让你感觉到任何地方。

例如,去你的迷宫:

随机生成的积分将是这样的:(注意,开始和结束点在这里可以固定,或至少受到限制到(某些?)边)

1///////// 
////// 4///  
////////// 
//// 3/////
////////// 
/2//////// 
//////// 5 6 

然后你从3水平1和垂直移动的另一种做法已经从垂直水平1从3

移动和连接1和
1 * * * #///// 
//// */4///  
//// */////
//// 3/////
////////// 
/2//////// 
//////// 5 6 

然后以相同的方式连接3和2,2和4,4和5以及5和6。

请注意,当连接5和6时,由于它们位于同一水平线上,所以它们只能直接连接而没有交点。或者你可以把它看作是5或6垂直移动0单位。