Bien que cette approche ne soit pas vraiment nécessaire pour quelque chose d'aussi simple qu'un échiquier, quand je pense à une manière élégante de rendre quelque chose lié à la vue, je veux rendre aussi simple que possible la modification de la vue rendue. Par exemple, supposons que vous ayez décidé d'alterner le noir et le blanc sur chaque ligne, mais pas sur chaque colonne. Les lignes simples utilisées jusqu'à présent dans les réponses devraient être réécrites.
Si je devais aller aussi loin que possible avec cela et rendre aussi facile que possible la refonte du motif sur l'échiquier, voici ce que je ferais:
1) Je créerais un fichier indiquant la couleur de chaque case de l'échiquier.
Par exemple, je pourrais créer un fichier chess_board_pattern.config
qui ressemble à ceci:
bwbwbwbw
wbwbwbwb
bwbwbwbw
wbwbwbwb
bwbwbwbw
wbwbwbwb
bwbwbwbw
wbwbwbwb
2) J'écrirais une classe / composant / tout ce qui peut lire ce fichier et créer une sorte d'objet qui représente le modèle de carte:
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) J'utiliserais alors cette classe dans la fonction qui dessine réellement le tableau.
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]);
}
}
Encore une fois, c'est beaucoup plus difficile que nécessaire pour un échiquier. Je pense qu'en général, cependant, lorsque vous travaillez sur des projets plus compliqués, il est préférable de proposer des solutions généralisées comme celle-ci au lieu d'écrire du code difficile à modifier plus tard.