public class JogoGalo {

    private ResultadoJogo _estado;

    // ...

    public boolean joga(Peca peca, int linha, int coluna) {
        if (_estado != ResultadoJogo.NAO_FINALIZADO)
            return false;

        if (linha >= 1 && linha <= _tabuleiro.length && coluna >= 1 && coluna <= _tabuleiro[0].length &&
          _tabuleiro[linha - 1][coluna - 1].estaLivre()) {
            _tabuleiro[linha - 1][coluna - 1] = peca;

            if (ganhou(linha, coluna))
                _estado = (peca.devolveJogador().equals("Jogador 1")) ? ResultadoJogo.JOGADOR_1 : ResultadoJogo.JOGADOR_2;
            else if (!temJogadasDisponiveis())
                _estado = ResultadoJogo.EMPATE;

            return true;
        }

        return false;
    }

    public ResultadoJogo obtemResultado() {
        return _estado;
    }
}