これは、三目並べゲームに関する以前の質問の続きです。私は、三目並べボードのすべての空のグリッド タイルを収集し、それらをリストに返す関数を作成しています。この関数は、行われた移動に隣接する空のグリッド タイルを探し続けるという点で、再帰的です。このようなもの:
<------->
< X O - >
< - - X >
< O X - >
<------->
したがって、ユーザー (または、この場合、コンピューターと対戦するコンピューター用に作成したコード) が、タイルを選択して、どのグリッド タイルが空であるかを知りたいとします。上記の例では、タイルに番号が付けられます
0 1 2
3 4 5
6 7 8
コンピューターがタイル 1 を選択したとします。隣接するタイル (この場合は上、左、右、下) を検索し、そこに移動できるかどうかを確認します。隣接するタイルが空であることが判明した場合は、すべての可能性を使い果たすまで、そのタイルの隣接するタイルも検索します。そのため、現在のボードと playerMove を使用して関数を呼び出し、隣接する空のタイルを見つけてリストに追加できるようにしたいと考えています。任意のヒント?
def whatIsEmpty(moveList,move):
emptyTiles = []
#something that allows you to find the adjacent tiles of the move
#something that allows you to find the adjacent tiles of the tiles found above, until all are found
これにはいくつかの for ループが必要であることはわかっていますが、開始方法がわかりません。私が知っているのは、架空の 3x3 グリッドの真ん中に移動し、隣接するタイルを見つけてそれらが空かどうかを確認したいということです。したがって、2D リストでは、次のようなものを使用します。
moveList[x-1][y]
moveList[x][y+1]
moveList[x+1][y]
moveList[x][y+1]
それぞれが上、右、左、下に対応し、これは再帰的に使用されます。どんなヒントでも大歓迎です。