我正在尝试提出一种在基于场景图块的游戏中随机行走的算法。walker 需要能够随机导航,直到探索完所有图块或找到下一个级别。
到目前为止,如果演员踩到它,我已经探索了瓷砖。
然后它找到到下一个图块中心的路径。
但是它失败的地方是它经常认为它已经完成了探索,或者没有剩下的瓷砖了。
有没有地方可以寻找一些例子,好像我要粘贴源代码会很长。
我正在尝试提出一种在基于场景图块的游戏中随机行走的算法。walker 需要能够随机导航,直到探索完所有图块或找到下一个级别。
到目前为止,如果演员踩到它,我已经探索了瓷砖。
然后它找到到下一个图块中心的路径。
但是它失败的地方是它经常认为它已经完成了探索,或者没有剩下的瓷砖了。
有没有地方可以寻找一些例子,好像我要粘贴源代码会很长。
几年前我在Mac上做了一个这样的,并用“FLAGS”解决它以确定是否已经发生了什么/条件是否满足......
If FlagFinal=1 then (exit) else ...
我游戏中的大部分事情都是用旗帜完成的。
因此,当在图块中遇到随机陌生人时,它会检查其他标志是否为 1。所以......在 MeetMilkMaid 上,如果 FlagCow=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#
更多信息在 C# Stack 类 (MSDN)
中随机化一个列表