Embora essa abordagem não seja realmente necessária para algo tão simples quanto um tabuleiro de xadrez, quando penso em uma maneira elegante de renderizar algo relacionado à vista, desejo facilitar o máximo possível a alteração da exibição renderizada. Por exemplo, suponha que você tenha decidido alternar preto e branco em cada linha, mas não em cada coluna. Os one-liners usados nas respostas até agora teriam que ser reescritos.
Se eu fosse o mais longe possível e tornasse mais fácil redesenhar o padrão possível no tabuleiro de xadrez, eis o que eu faria:
1) Eu faria um arquivo que indica qual a cor de cada quadrado no tabuleiro de xadrez.
Por exemplo, eu poderia criar um arquivo chess_board_pattern.config
parecido com este:
bwbwbwbw
wbwbwbwb
bwbwbwbw
wbwbwbwb
bwbwbwbw
wbwbwbwb
bwbwbwbw
wbwbwbwb
2) Eu escreveria uma classe / componente / qualquer coisa que possa ler este arquivo e criaria algum tipo de objeto que represente o padrão do quadro:
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) Eu usaria essa classe na função que realmente chama a atenção.
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]);
}
}
Novamente, isso é muito mais difícil do que o necessário para um tabuleiro de xadrez. Penso que, em geral, ao trabalhar em projetos mais complicados, é melhor apresentar soluções generalizadas como essa, em vez de escrever código difícil de mudar mais tarde.