public override bool[,] possiveisMove() { bool[,] mat = new bool[tab.linhas, tab.colunas]; Posicao pos = new Posicao(0, 0); pos.defineValor(posicao.linha - 1, posicao.coluna - 2); verificarVizinho(mat, pos); pos.defineValor(posicao.linha - 2, posicao.coluna - 1); verificarVizinho(mat, pos); pos.defineValor(posicao.linha - 2, posicao.coluna + 1); verificarVizinho(mat, pos); pos.defineValor(posicao.linha - 1, posicao.coluna + 2); verificarVizinho(mat, pos); pos.defineValor(posicao.linha - 1, posicao.coluna + 2); verificarVizinho(mat, pos); pos.defineValor(posicao.linha + 1, posicao.coluna + 2); verificarVizinho(mat, pos); pos.defineValor(posicao.linha + 2, posicao.coluna + 1); verificarVizinho(mat, pos); pos.defineValor(posicao.linha + 2, posicao.coluna - 1); verificarVizinho(mat, pos); pos.defineValor(posicao.linha + 1, posicao.coluna - 2); verificarVizinho(mat, pos); return(mat); }
public override bool[,] possiveisMove() { bool[,] mat = new bool[tab.linhas, tab.colunas]; Posicao pos = new Posicao(0, 0); if (cor == Cor.Branca) { pos.defineValor(posicao.linha - 1, posicao.coluna); if (tab.posicaoValida(pos) && livre(pos)) { mat[pos.linha, pos.coluna] = true; } pos.defineValor(posicao.linha - 2, posicao.coluna); if (tab.posicaoValida(pos) && livre(pos) && quantmovi == 0) { mat[pos.linha, pos.coluna] = true; } pos.defineValor(posicao.linha - 1, posicao.coluna - 1); capturarInimigo(mat, pos); pos.defineValor(posicao.linha - 1, posicao.coluna + 1); capturarInimigo(mat, pos); //#jogada especial en passant if (posicao.linha == 3) { verificarInimigoEnPassant(mat, 1); } } else { pos.defineValor(posicao.linha + 1, posicao.coluna); if (tab.posicaoValida(pos) && livre(pos)) { mat[pos.linha, pos.coluna] = true; } pos.defineValor(posicao.linha + 2, posicao.coluna); if (tab.posicaoValida(pos) && livre(pos) && quantmovi == 0) { mat[pos.linha, pos.coluna] = true; } pos.defineValor(posicao.linha + 1, posicao.coluna - 1); capturarInimigo(mat, pos); pos.defineValor(posicao.linha + 1, posicao.coluna + 1); capturarInimigo(mat, pos); //#jogada especial en passant if (posicao.linha == 4) { verificarInimigoEnPassant(mat, -1); } } return(mat); }
public override bool[,] possiveisMove() { bool[,] mat = new bool[tab.linhas, tab.colunas]; Posicao pos = new Posicao(0, 0); pos.defineValor(posicao.linha - 1, posicao.coluna); verificarVizinho(mat, pos); pos.defineValor(posicao.linha - 1, posicao.coluna + 1); verificarVizinho(mat, pos); pos.defineValor(posicao.linha, posicao.coluna + 1); verificarVizinho(mat, pos); pos.defineValor(posicao.linha + 1, posicao.coluna + 1); verificarVizinho(mat, pos); pos.defineValor(posicao.linha + 1, posicao.coluna); verificarVizinho(mat, pos); pos.defineValor(posicao.linha + 1, posicao.coluna - 1); verificarVizinho(mat, pos); pos.defineValor(posicao.linha, posicao.coluna - 1); verificarVizinho(mat, pos); pos.defineValor(posicao.linha - 1, posicao.coluna - 1); verificarVizinho(mat, pos); //// #jogadaespecial roque if (quantmovi == 0 && !partida.xeque) { // #jogadaespecial roque pequeno Posicao posT1 = new Posicao(posicao.linha, posicao.coluna + 3); if (testeTorreRoque(posT1)) { Posicao p1 = new Posicao(posicao.linha, posicao.coluna + 1); Posicao p2 = new Posicao(posicao.linha, posicao.coluna + 2); if (tab.peca(p1) == null && tab.peca(p2) == null) { mat[posicao.linha, posicao.coluna + 2] = true; } } // #jogadaespecial roque grande Posicao posT2 = new Posicao(posicao.linha, posicao.coluna - 4); if (testeTorreRoque(posT2)) { Posicao p1 = new Posicao(posicao.linha, posicao.coluna - 1); Posicao p2 = new Posicao(posicao.linha, posicao.coluna - 2); Posicao p3 = new Posicao(posicao.linha, posicao.coluna - 3); if (tab.peca(p1) == null && tab.peca(p2) == null && tab.peca(p3) == null) { mat[posicao.linha, posicao.coluna - 2] = true; } } } return(mat); }
private void verificarVizinhoO(bool[,] mat, Posicao pos, int i) { while (tab.posicaoValida(pos) && movimentoLivre(pos)) { mat[pos.linha, pos.coluna] = true; if (tab.peca(pos) != null && tab.peca(pos).cor != this.cor) { break; } pos.defineValor(pos.linha - i, pos.coluna + i); } }