Obwohl dieser Ansatz für etwas so Einfaches wie ein Schachbrett nicht unbedingt erforderlich ist, möchte ich, wenn ich mir eine elegante Möglichkeit überlege, etwas mit der Ansicht zu rendern, es so einfach wie möglich machen, die gerenderte Ansicht so einfach wie möglich zu ändern. Angenommen, Sie möchten in jeder Zeile, jedoch nicht in jeder Spalte, Schwarz und Weiß abwechseln. Die bisher in Antworten verwendeten Einzeiler müssten neu geschrieben werden.
Wenn ich so weit wie möglich gehen und es so einfach wie möglich machen würde, das Muster auf dem Schachbrett neu zu gestalten, würde ich Folgendes tun:
1) Ich würde eine Datei erstellen, die angibt, welche Farbe jedes Quadrat im Schachbrett hat.
Zum Beispiel könnte ich eine Datei erstellen chess_board_pattern.config
, die ungefähr so aussieht:
bwbwbwbw
wbwbwbwb
bwbwbwbw
wbwbwbwb
bwbwbwbw
wbwbwbwb
bwbwbwbw
wbwbwbwb
2) Ich würde eine Klasse / Komponente / was auch immer schreiben, die diese Datei lesen und eine Art Objekt erstellen kann, das das Brettmuster darstellt:
public class BoardPattern {
private Color[][] pattern;
public BoardPattern(File patternFile)
{
pattern = new Color[8][8];
//Parse the file and fill in the values of pattern
}
public Color[][] getPattern {
return pattern;
}
}
3) Ich würde dann diese Klasse in der Funktion verwenden, die die Tafel tatsächlich zeichnet.
File patternFile = new File("chess_board_pattern.ini");
Color[][] pattern = new BoardPattern(patternFile).getPattern();
ChessBoardDrawable chessBoard = new ChessBoardDrawable();
for(int row = 0; row < 8; row++) {
for(int column; column < 8; column++) {
chessBoard.drawSquare(row, column, Color[row][column]);
}
}
Auch dies ist viel schwieriger als es für ein Schachbrett notwendig ist. Ich denke jedoch, dass es bei der Arbeit an komplizierteren Projekten am besten ist, allgemeine Lösungen wie diese zu finden, anstatt Code zu schreiben, der später nur schwer zu ändern ist.