Board Game - Scotland Yard(Duvidas)

Olá pessoal é meu primeiro post aqui, estudo java faz por volta de 6 meses, agora decidi criar um jogo de tabuleiro baseado no jogo “Scotland Yard” um jogo de investigação, o jogo conciste basicamente de um tabuleiro e as peças dos jogadores onde dependendo do valor no dado que sair eles podem mecher as peças meu objetivo é reproduzir o tabulheiro e deixar os players mecherem as peças sozinho sem esquema de turnos como existe no xadrez ou nas damas, gostaria de saber se a maneira que eu criei o tabuleiro é a mais eficiente, gostaria de ideias de como colocar as peças nele! Obrigado!!! Segue o codigo abaixo:

[code]import java.awt.BorderLayout;
import java.awt.GridLayout;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class Tabuleiro extends JFrame {

private int x = 18;
private int y = 23;
private JLabel[][] casas = new JLabel[x][y];
private ImageIcon casaBranca, casaPreta;
private JPanel tela;
private byte [][] tipoCasas;


public Tabuleiro() {
    criarTabuleiro();
}

private void criarTabuleiro() {
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    //Casa branca é onde pode andar, casa preta aonde não pode
    casaBranca = new ImageIcon("C:/Users/Santhell/JavaApplication4/imagens/casa.png");
    casaPreta  = new ImageIcon("C:/Users/Santhell/JavaApplication4/imagens/casaPreta.png");
    tela = new JPanel(new GridLayout(x, y, 0, 0));
    add(tela, BorderLayout.WEST);
    int[][] tipoCasas = new int[][] {{0, 0, 0 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1}, 
                                     {0, 0, 0 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1},
                                     {1, 1, 1 , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1},  
                                     {1, 0, 0 , 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1},
                                     {1, 0, 0 , 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1},  
                                     {1, 0, 0 , 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1},
                                     {1, 0, 0 , 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1},  
                                     {1, 0, 0 , 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1},
                                     {1, 1, 1 , 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1},
                                     {1, 1, 0 , 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0},
                                     {1, 1, 0 , 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0},
                                     {1, 1, 0 , 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0},
                                     {1, 1, 1 , 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0},
                                     {1, 1, 1 , 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0},
                                     {0, 0, 0 , 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0},
                                     {0, 0, 0 , 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
                                     {0, 0, 0 , 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
                                     {0, 0, 0 , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
    for(int i = 0; i < x; i++){
        for(int j = 0; j < y; j++){
            if (tipoCasas[i][j] == 1) {
            casas[i][j] = new JLabel(casaBranca);
            tela.add(casas[i][j]);
            } else {
            casas[i][j] = new JLabel(casaPreta);
            tela.add(casas[i][j]);
            }
        }
    }
    setResizable(false);
    pack();
}

}[/code]