-1

我正在尝试提出一种在基于场景图块的游戏中随机行走的算法。walker 需要能够随机导航,直到探索完所有图块或找到下一个级别。

到目前为止,如果演员踩到它,我已经探索了瓷砖。

然后它找到到下一个图块中心的路径。

但是它失败的地方是它经常认为它已经完成了探索,或者没有剩下的瓷砖了。

有没有地方可以寻找一些例子,好像我要粘贴源代码会很长。

4

2 回答 2

1

几年前我在Mac上做了一个这样的,并用“FLAGS”解决它以确定是否已经发生了什么/条件是否满足......

If FlagFinal=1 then (exit) else ...

我游戏中的大部分事情都是用旗帜完成的。

因此,当在图块中遇到随机陌生人时,它会检查其他标志是否为 1。所以......在 MeetMilkMaid 上,如果 FlagCow=0,则(询问)否则(奖励)。

希望这可以帮助。

于 2012-11-14T18:20:20.163 回答
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>. 使用您自己的自定义解决方案来选择下一个图块(而不是从堆栈中弹出它)并同时TileList. 只要List不为空,就一直循环。

如果您有更高级的场景(您可能事先不知道切片,或者切片可能无法访问),那么您可能会发现这篇 CodeProject 文章(和演示代码)很有帮助:
A* algorithm implementation in C#

更多信息在 C# Stack 类 (MSDN)
中随机化一个列表

于 2012-10-04T20:15:20.083 回答