我正在尝试在基于场景平铺的游戏中提出一种随机行走算法。 步行者需要能够随机导航,直到探索完所有图块或直到找到下一个图块。
到目前为止,如果演员踩到它,我就会探索过这块瓷砖。
然后它找到下一个图块中心的路径。
但是它失败的地方通常认为它已经完成了探索,或者没有更多的瓷砖了。
是否有任何地方可以寻找一些例子,就好像我要粘贴源一样,它会很长。
答案 0 :(得分:1)
我几年前在Mac上做过这样的一个,然后用“FLAGS”解决了这个问题,以确定是否已发生任何事情/条件已满足......
If FlagFinal=1 then (exit) else ...
我游戏中的大部分内容都是用旗帜完成的。
因此,当在磁贴中遇到随机的陌生人时,会检查其他标志是否为1。 所以...如果FlagCow = 0则在MeetMilkMaid上然后(请问)其他(做奖励)。
希望这有帮助。
答案 1 :(得分:0)
嗯...如果你的意思是真正的随机行走,那么获取所有瓷砖的列表,随机化它,然后将随机化的项目添加到堆栈(或队列)。当你走到它时,将每个瓷砖从堆栈中弹出。
Tile[] _tiles;
//... some code here to load the tiles
Tile[] _randomizedTiles;
//... some code here to randomize the tiles
Stack<Tile> _tilesToExplore = new Stack<Tile>( _randomizedTiles );
while ( _tilesToExplore.Count > 0 ){
var l_nextTile = _tilesToExplore.Pop();
//... some code to walk to the tile
}
如果您的意思是伪随机“徘徊”,那么您可以使用List<Tile>
修改此方法。使用您自己的自定义解决方案来挑选下一个磁贴(而不是从堆栈中弹出),同时从Tile
中删除List
。只要List
不为空,就保持循环。
如果您有更高级的方案(您可能事先不知道磁贴,或者磁贴可能无法访问),那么您可能会发现此CodeProject文章(和演示代码)很有用:
A* algorithm implementation in C#