うーん...本当にランダムなウォーキングを意味する場合は、すべてのタイルのリストを取得してランダム化し、ランダム化されたアイテムをスタック (またはキュー) に追加します。あなたがそれに近づくと、スタックから各タイルをポップします。
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 記事 (およびデモ コード) が役立つことがあります:
C# でのアルゴリズムの実装
詳細情報C# Stack クラス
でリストをランダム化する(MSDN)