Ich erstelle ein zweidimensionales Array von Zellen, bestehend aus JButtons (wenn das sinnvoll ist), um ein Spiel ähnlich wie Tic-Tac-Toe zu erstellen. Example of what im trying to accomplish vergessen, dass hinzufügen, wenn eine Zelle umgeben ist, ist das SpielVerwenden eines zweidimensionalen Arrays, um ein Spiel zu erstellen
gewinnt ich zur Zeit bei der Bearbeitung der for-Schleife bin verloren für die Zuweisung entweder die einer oder Null aus dieser aktuellen Zelle zu berücksichtigen, und die Zuordnung es zu eine lokale Variable.
Wenn ich sage topNum = board [row-1] [col]; Wie gehe ich vor, um entweder die einer Zelle zugewiesene Eins oder Null abzurufen? (Ich verwende eine setText Eigenschaft die Nummer der Zelle zuweisen.)
Danke für Ihre Hilfe
public boolean isWinner() {
for (int row = 0; row < this.sizeRow; row++) {
for (int col = 0; col < this.sizeCol; col++) {
Cell num = board[row][col];
// not a winner if this cell is null
if (num != null) {
// Look at above cell
Integer topNum = -1;
if (row > 0) {
topNum = board[row-1][col];
if (topNum == null) break;
}
// Look at right cell
Integer rightNum = -1;
if (col == this.sizeCol-1) {
rightNum = board[row][col+];
if (rightNum == null) break;
}
// Look at left cell
Integer leftNum = -1;
if (col == this.sizeCol-1) {
rightNum = board[row][col-];
if (rightNum == null) break;
}
// Look at bottom cell
Integer bottomNum = -1;
if (row > 0) {
topNum = board[row+1][col];
if (topNum == null) break;
}
// do similar for left cell and bottom cell
// Check that topNum is not our current cell
// then check that topNum is the same number as right left and bottom OR those cells are -1, which
// means that side was on an edge.
if (!num.equals(topNum)) {
if ((topNum.equals(rightNum) || rightNum.equals(-1))
&& (topNum.equals(leftNum) || leftNum.equals(-1))
&& (topNum.equals(bottomNum) || bottomNum.equals(-1)) {
return true;
}
}
}
}
}
return false;
}
Es gibt ein paar Lösungen im Umlauf für Tic-Tac-Toe und verbinden vier, die Algorithmen gibt für die Bestimmung ein Gewinnzustand basierend auf linearen Flüssen. In Ihrem Fall besteht die Grundidee darin, die aktuelle Zelle zu betrachten und basierend auf ax/y delta um alle umgebenden Zellen herumzugehen (x-1, y-1; x; y-1, x + 1, y-1 , so weiter und so eins), erlaubt das Problem für eine Situation, in der eine Zelle entlang der Kante ist, die ich zurückgeben würde blockiert – MadProgrammer