Meskipun pendekatan ini tidak benar-benar diperlukan untuk sesuatu yang sederhana seperti papan catur, ketika saya memikirkan cara yang elegan untuk membuat sesuatu yang terkait dengan tampilan, saya ingin membuatnya semudah mungkin untuk mengubah tampilan yang diberikan sebanyak mungkin. Misalnya, Anda memutuskan ingin mengganti hitam dan putih pada setiap baris, tetapi tidak setiap kolom. Baris satu yang digunakan dalam jawaban sejauh ini harus ditulis ulang.
Jika saya melangkah sejauh mungkin dengan ini dan membuatnya mudah untuk mendesain ulang pola di papan Catur mungkin, inilah yang akan saya lakukan:
1) Saya akan membuat file yang menunjukkan warna setiap kotak di papan catur.
Misalnya, saya bisa membuat file chess_board_pattern.config
yang terlihat seperti ini:
bwbwbwbw
wbwbwbwb
bwbwbwbw
wbwbwbwb
bwbwbwbw
wbwbwbwb
bwbwbwbw
wbwbwbwb
2) Saya akan menulis kelas / komponen / apa pun yang dapat membaca file ini dan membuat beberapa jenis objek yang mewakili pola papan:
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) Saya kemudian akan menggunakan kelas itu dalam fungsi yang benar-benar menggambar papan.
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]);
}
}
Sekali lagi, ini jauh lebih sulit daripada yang diperlukan untuk papan Catur. Saya pikir secara umum, ketika bekerja pada proyek yang lebih rumit, yang terbaik untuk datang dengan solusi umum seperti ini daripada menulis kode yang sulit diubah nanti.