Ich bin beschäftigt, eine Version von Minesweeper in Python 3.5 zu schreiben, und der Code, den ich hier habe, ist entworfen, um jeden Wert in einem 2-dimensionalen Array, das ich als das Spielbrett erstellt habe, zu überprüfen und zu überprüfen, wie viele Minen (bezeichnet mit "O") umgeben es. Es funktioniert, aber ich fühle, dass der Code zu klobig ist. Gibt es eine Funktion in Python, die dies tut, oder gibt es eine Funktion, die ich schreiben könnte, die es vereinfachen würde?Effizient Werte um einen anderen Wert in einem 2D-Array lesen?
Die if-Anweisungen sind da, um zuerst zu überprüfen, ob der Wert im Array ist, so dass außerhalb des Bereichs nicht auftritt, und dann am Ort zu überprüfen.
for x in range(len(array)):
for y in range(len(array[0])):
if array[x][y] != "O":
counter = 0
if (x - 1 >= 0) and (array[x-1][y] == "O"):
counter += 1
if (x + 1 < len(array)) and (array[x+1][y] == "O"):
counter += 1
if (y - 1 >= 0) and (array[x][y+1] == "O"):
counter += 1
if (y + 1 < len(array)) and (array[x][y+1] == "O"):
counter += 1
if (x - 1 >= 0) and (y - 1 >= 0) and (array[x-1][y-1] == "O"):
counter += 1
if (x - 1 >= 0) and (y + 1 < len(array)) and (array[x-1][y+1] == "O"):
counter += 1
if (x + 1 < len(array)) and (y - 1 >= 0) and (array[x+1][y-1] == "O"):
counter += 1
if (x + 1 < len(array)) and (y + 1 < len(array)) and (array[x+1][y+1] == "O"):
counter += 1
array[x][y] = counter
Welche Werte kann ein Array-Element nehmen? Ich nehme 'if Array [x] [y]! = 0 ', um zu bedeuten, dass es keine leere Zelle ist und daher die Zahl darin bedeuten würde, wie viele Minen es gibt. Versteh ich etwas falsch? – Reti43
Können Sie auch numpy verwenden? – Reti43
Ich wollte schreiben! = "O", was bedeutet, dass es keine Mine ist. Ich habe es aktualisiert. Ich bin nicht so erfahren, und obwohl ich von numpy gehört habe, wusste ich nicht, dass es so etwas tun könnte. – Dova