Tic Tac Toe – Leere Rasterfliesen finden

Dies ist eine Fortsetzung meiner bisherigen Frage zum Tic Tac Toe Spiel. Ich mache eine Funktion, die alle leeren Rasterfliesen eines Tic Tac Toe Board sammeln und sie in eine Liste zurücksenden wird. Diese Funktion wäre rekursiv, da sie auf der Suche nach leeren Rasterfliesen wäre, die angrenzend an einen Umzug sind. Etwas wie das:

<-------> < XO - > < - - X > < OX - > <-------> 

So lasst uns der Benutzer sagen (oder in diesem Fall der Code, den ich für den Computer geschrieben habe, der gegen den Computer spielt) möchte wissen, welche Rasterfliesen leer sind, indem du eine Fliese auswählst. Für das obige Beispiel würden die Fliesen nummeriert

 0 1 2 3 4 5 6 7 8 

Und so lasst uns sagen, der Computer wählte Fliese 1 – es würde die angrenzenden Fliesen suchen (also in diesem Fall oben, links, rechts und unten) und sehen, ob es dort bewegt werden kann. Wenn es feststellt, dass eine angrenzende Fliese leer ist, findet sie auch die angrenzenden Fliesen dieser Fliese, bis sie alle Möglichkeiten ausschöpft. Also möchte ich in der Lage sein, meine Funktion mit dem aktuellen Brett und einem Spieler zu nennen und die benachbarten Fliesen zu finden, die leer sind und sie an eine Liste anhängen. Irgendwelche Tipps?

 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 

Ich weiß, ich brauche ein Paar für Loops für dieses, aber ich bin nicht sicher, wie man anfängt. Was ich weiß, ist, dass ich mich mitten in einem imaginären 3×3-Raster bewegen möchte, und finde seine angrenzenden Fliesen, um zu sehen, ob sie leer sind und so weiter. Also in einer 2D-Liste würde ich so etwas verwenden:

 moveList[x-1][y] moveList[x][y+1] moveList[x+1][y] moveList[x][y+1] 

Wo jeder von oben, rechts, links und unten entspricht, und dies würde rekursiv verwendet werden. Irgendwelche Tipps werden sehr geschätzt.

    One Solution collect form web for “Tic Tac Toe – Leere Rasterfliesen finden”

    Eine rekursive Strategie ist vielleicht nicht in diesem Szenario am besten. Betrachten Sie das Beispiel, das Sie selbst zur Verfügung gestellt haben:

     <-------> < XO - > < - - X > < OX - > <-------> 

    Angenommen, der nächste Zug wurde in der mittleren Fliese gemacht. Wenn die rekursive Funktion nur die vier Kacheln neben ihr prüft, dann würde es die Fliese vermissen, die von dem Rest "abgeschnitten" wurde (rechts unten). Und wenn du eine Funktion schreiben möchtest, um alle 8 angrenzenden Fliesen (einschließlich diagonal benachbarten) zu überprüfen, kannst du es auch iterativ schreiben.

     for i in range(3): for j in range(3): pass # Replace with code to add empty tile to list 
    Python ist die beste Programmiersprache der Welt.