-1

シーンタイルベースのゲームでランダムウォークするためのアルゴリズムを考え出そうとしています。歩行者は、すべてのタイルが探索されるまで、または次のレベルが見つかるまで、ランダムにナビゲートできる必要があります。

これまでのところ、アクターがタイルを踏んだ場合に探索されたタイルがあります。

次に、次のタイルの中心へのパスを見つけます。

しかし、失敗した場合は、探索が終了した、またはタイルが残っていないと考えることがよくあります。

ソースを貼り付けるのと同じように、いくつかの例を探す場所はありますか。

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>。独自のカスタム ソリューションを使用して次のタイルを選択し (スタックからポップするのではなく)、同時に から を削除しTileますListListが空でない限り、ループを続けます。

より高度なシナリオ (事前にタイルがわからない、またはタイルにアクセスできない可能性がある) がある場合は、次の CodeProject 記事 (およびデモ コード) が役立つことがあります:
C# でのアルゴリズムの実装

詳細情報C# Stack クラス
でリストをランダム化する(MSDN)

于 2012-10-04T20:15:20.083 に答える