public override bool[,] MovimentosPossiveis() { bool[,] mat = new bool[Tab.linhas, Tab.colunas]; Posicao pos = new Posicao(0, 0); pos.DefinirValores(Posicao.linha - 1, Posicao.coluna - 2); if (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.linha, pos.coluna] = true; } pos.DefinirValores(Posicao.linha - 2, Posicao.coluna - 1); if (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.linha, pos.coluna] = true; } pos.DefinirValores(Posicao.linha - 2, Posicao.coluna + 1); if (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.linha, pos.coluna] = true; } pos.DefinirValores(Posicao.linha - 1, Posicao.coluna + 2); if (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.linha, pos.coluna] = true; } pos.DefinirValores(Posicao.linha + 1, Posicao.coluna + 2); if (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.linha, pos.coluna] = true; } pos.DefinirValores(Posicao.linha + 2, Posicao.coluna + 1); if (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.linha, pos.coluna] = true; } pos.DefinirValores(Posicao.linha + 2, Posicao.coluna - 1); if (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.linha, pos.coluna] = true; } pos.DefinirValores(Posicao.linha + 1, Posicao.coluna - 2); if (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.linha, pos.coluna] = true; } return(mat); }
public override bool[,] MovimentosPosiveis() { bool[,] matriz = new bool[Tabuleiro.Linhas, Tabuleiro.Colunas]; Posicao posicao = new Posicao(0, 0); posicao.DefinirValores(Posicao.Linha - 1, Posicao.Coluna - 2); if (Tabuleiro.PosicaoValida(posicao) && PodeMover(posicao)) { matriz[posicao.Linha, posicao.Coluna] = true; } posicao.DefinirValores(Posicao.Linha - 2, Posicao.Coluna - 1); if (Tabuleiro.PosicaoValida(posicao) && PodeMover(posicao)) { matriz[posicao.Linha, posicao.Coluna] = true; } posicao.DefinirValores(Posicao.Linha - 2, Posicao.Coluna + 1); if (Tabuleiro.PosicaoValida(posicao) && PodeMover(posicao)) { matriz[posicao.Linha, posicao.Coluna] = true; } posicao.DefinirValores(Posicao.Linha - 1, Posicao.Coluna + 2); if (Tabuleiro.PosicaoValida(posicao) && PodeMover(posicao)) { matriz[posicao.Linha, posicao.Coluna] = true; } posicao.DefinirValores(Posicao.Linha + 1, Posicao.Coluna + 2); if (Tabuleiro.PosicaoValida(posicao) && PodeMover(posicao)) { matriz[posicao.Linha, posicao.Coluna] = true; } posicao.DefinirValores(Posicao.Linha + 2, Posicao.Coluna + 1); if (Tabuleiro.PosicaoValida(posicao) && PodeMover(posicao)) { matriz[posicao.Linha, posicao.Coluna] = true; } posicao.DefinirValores(Posicao.Linha + 2, Posicao.Coluna - 1); if (Tabuleiro.PosicaoValida(posicao) && PodeMover(posicao)) { matriz[posicao.Linha, posicao.Coluna] = true; } posicao.DefinirValores(Posicao.Linha + 1, Posicao.Coluna - 2); if (Tabuleiro.PosicaoValida(posicao) && PodeMover(posicao)) { matriz[posicao.Linha, posicao.Coluna] = true; } return(matriz); }
public override bool[,] movimentosPossiveis() { bool[,] mat = new bool[tab.linhas, tab.colunas]; Posicao pos = new Posicao(0, 0); // acima pos.DefinirValores(posicao.linha - 1, posicao.coluna); if (tab.posicaoValida(pos) && podeMover(pos)) { mat[pos.linha, pos.coluna] = true; } // nordeste pos.DefinirValores(posicao.linha - 1, posicao.coluna + 1); if (tab.posicaoValida(pos) && podeMover(pos)) { mat[pos.linha, pos.coluna] = true; } //direita pos.DefinirValores(posicao.linha, posicao.coluna + 1); if (tab.posicaoValida(pos) && podeMover(pos)) { mat[pos.linha, pos.coluna] = true; } //sudeste pos.DefinirValores(posicao.linha + 1, posicao.coluna + 1); if (tab.posicaoValida(pos) && podeMover(pos)) { mat[pos.linha, pos.coluna] = true; } //abaixo pos.DefinirValores(posicao.linha + 1, posicao.coluna); if (tab.posicaoValida(pos) && podeMover(pos)) { mat[pos.linha, pos.coluna] = true; } //sudoeste pos.DefinirValores(posicao.linha + 1, posicao.coluna - 1); if (tab.posicaoValida(pos) && podeMover(pos)) { mat[pos.linha, pos.coluna] = true; } //esquerda pos.DefinirValores(posicao.linha, posicao.coluna - 1); if (tab.posicaoValida(pos) && podeMover(pos)) { mat[pos.linha, pos.coluna] = true; } //noroeste pos.DefinirValores(posicao.linha - 1, posicao.coluna - 1); if (tab.posicaoValida(pos) && podeMover(pos)) { mat[pos.linha, pos.coluna] = true; } //# jogada especial ROQUE if (qteMovimentos == 0 && !partida.xeque) { // #jogadaespecial roque pequeno Posicao posT1 = new Posicao(posicao.linha, posicao.coluna + 3); if (testeTorreParaRoque(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 (testeTorreParaRoque(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); }
public override bool[,] MovimentosPossiveis() { bool[,] mat = new bool[Tab.Linhas, Tab.Colunas]; Posicao pos = new Posicao(0, 0); //Oeste pos.DefinirValores(Posicao.Linha, Posicao.Coluna - 1); while (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; if (Tab.Peca(pos) != null && Tab.Peca(pos).Cor != Cor) { break; } pos.DefinirValores(pos.Linha, pos.Coluna - 1); } //Leste pos.DefinirValores(Posicao.Linha, Posicao.Coluna + 1); while (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; if (Tab.Peca(pos) != null && Tab.Peca(pos).Cor != Cor) { break; } pos.DefinirValores(pos.Linha, pos.Coluna + 1); } //Norte pos.DefinirValores(Posicao.Linha - 1, Posicao.Coluna); while (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; if (Tab.Peca(pos) != null && Tab.Peca(pos).Cor != Cor) { break; } pos.DefinirValores(pos.Linha - 1, pos.Coluna); } //Sul pos.DefinirValores(Posicao.Linha + 1, Posicao.Coluna); while (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; if (Tab.Peca(pos) != null && Tab.Peca(pos).Cor != Cor) { break; } pos.DefinirValores(pos.Linha + 1, pos.Coluna); } //Noroeste pos.DefinirValores(Posicao.Linha - 1, Posicao.Coluna - 1); while (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; if (Tab.Peca(pos) != null && Tab.Peca(pos).Cor != Cor) { break; } pos.DefinirValores(pos.Linha - 1, pos.Coluna - 1); } //Nordeste pos.DefinirValores(Posicao.Linha - 1, Posicao.Coluna + 1); while (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; if (Tab.Peca(pos) != null && Tab.Peca(pos).Cor != Cor) { break; } pos.DefinirValores(pos.Linha - 1, pos.Coluna + 1); } //Sudeste pos.DefinirValores(Posicao.Linha + 1, Posicao.Coluna + 1); while (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; if (Tab.Peca(pos) != null && Tab.Peca(pos).Cor != Cor) { break; } pos.DefinirValores(pos.Linha + 1, pos.Coluna + 1); } //Sudoeste pos.DefinirValores(Posicao.Linha + 1, Posicao.Coluna - 1); while (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; if (Tab.Peca(pos) != null && Tab.Peca(pos).Cor != Cor) { break; } pos.DefinirValores(pos.Linha + 1, pos.Coluna - 1); } return(mat); }
public override bool[,] MovimentosPosiveis() { bool[,] matriz = new bool[Tabuleiro.Linhas, Tabuleiro.Colunas]; Posicao posicao = new Posicao(0, 0); if (Cor == Cor.Branca) { posicao.DefinirValores(Posicao.Linha - 1, Posicao.Coluna); if (Tabuleiro.PosicaoValida(posicao) && Livre(posicao)) { matriz[posicao.Linha, posicao.Coluna] = true; } posicao.DefinirValores(Posicao.Linha - 2, Posicao.Coluna); if (Tabuleiro.PosicaoValida(posicao) && Livre(posicao) && QtdMovimentos == 0) { matriz[posicao.Linha, posicao.Coluna] = true; } posicao.DefinirValores(Posicao.Linha - 1, Posicao.Coluna - 1); if (Tabuleiro.PosicaoValida(posicao) && ExisteInimigo(posicao)) { matriz[posicao.Linha, posicao.Coluna] = true; } posicao.DefinirValores(Posicao.Linha - 1, Posicao.Coluna + 1); if (Tabuleiro.PosicaoValida(posicao) && ExisteInimigo(posicao)) { matriz[posicao.Linha, posicao.Coluna] = true; } //#jogadaEspecial En Passant if (Posicao.Linha == 3) { Posicao esquerda = new Posicao(Posicao.Linha, Posicao.Coluna - 1); if (Tabuleiro.PosicaoValida(esquerda) && ExisteInimigo(esquerda) && Tabuleiro.Peca(esquerda) == Partida.VuneravelEnPassant) { matriz[esquerda.Linha - 1, esquerda.Coluna] = true; } Posicao direita = new Posicao(Posicao.Linha, Posicao.Coluna + 1); if (Tabuleiro.PosicaoValida(direita) && ExisteInimigo(direita) && Tabuleiro.Peca(direita) == Partida.VuneravelEnPassant) { matriz[direita.Linha - 1, direita.Coluna] = true; } } } else { posicao.DefinirValores(Posicao.Linha + 1, Posicao.Coluna); if (Tabuleiro.PosicaoValida(posicao) && Livre(posicao)) { matriz[posicao.Linha, posicao.Coluna] = true; } posicao.DefinirValores(Posicao.Linha + 2, Posicao.Coluna); if (Tabuleiro.PosicaoValida(posicao) && Livre(posicao) && QtdMovimentos == 0) { matriz[posicao.Linha, posicao.Coluna] = true; } posicao.DefinirValores(Posicao.Linha + 1, Posicao.Coluna - 1); if (Tabuleiro.PosicaoValida(posicao) && ExisteInimigo(posicao)) { matriz[posicao.Linha, posicao.Coluna] = true; } posicao.DefinirValores(Posicao.Linha + 1, Posicao.Coluna + 1); if (Tabuleiro.PosicaoValida(posicao) && ExisteInimigo(posicao)) { matriz[posicao.Linha, posicao.Coluna] = true; } //#jogadaEspecial En Passant if (Posicao.Linha == 4) { Posicao esquerda = new Posicao(Posicao.Linha, Posicao.Coluna - 1); if (Tabuleiro.PosicaoValida(esquerda) && ExisteInimigo(esquerda) && Tabuleiro.Peca(esquerda) == Partida.VuneravelEnPassant) { matriz[esquerda.Linha + 1, esquerda.Coluna] = true; } Posicao direita = new Posicao(Posicao.Linha, Posicao.Coluna + 1); if (Tabuleiro.PosicaoValida(direita) && ExisteInimigo(direita) && Tabuleiro.Peca(direita) == Partida.VuneravelEnPassant) { matriz[direita.Linha + 1, direita.Coluna] = true; } } } return(matriz); }
public override bool[,] MovimentosPossiveis() { bool[,] mat = new bool[Tab.Linhas, Tab.Colunas]; Posicao pos = new Posicao(0, 0); //Diagonal cima direita pos.DefinirValores(Posicao.Linha - 1, Posicao.Coluna + 1); while (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; if (Tab.peca(pos) != null && Tab.peca(pos).Cor != Cor) { break; } pos.Linha = pos.Linha - 1; pos.Coluna = pos.Coluna + 1; } //Diagonal baixo direita pos.DefinirValores(Posicao.Linha + 1, Posicao.Coluna + 1); while (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; if (Tab.peca(pos) != null && Tab.peca(pos).Cor != Cor) { break; } pos.Linha = pos.Linha + 1; pos.Coluna = pos.Coluna + 1; } //Diagonal baixo esquerda pos.DefinirValores(Posicao.Linha + 1, Posicao.Coluna - 1); while (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; if (Tab.peca(pos) != null && Tab.peca(pos).Cor != Cor) { break; } pos.Linha = pos.Linha + 1; pos.Coluna = pos.Coluna - 1; } //Diagonal cima esquerda pos.DefinirValores(Posicao.Linha - 1, Posicao.Coluna - 1); while (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; if (Tab.peca(pos) != null && Tab.peca(pos).Cor != Cor) { break; } pos.Linha = pos.Linha - 1; pos.Coluna = pos.Coluna - 1; } //acima pos.DefinirValores(Posicao.Linha - 1, Posicao.Coluna); while (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; if (Tab.peca(pos) != null && Tab.peca(pos).Cor != Cor) { break; } pos.Linha = pos.Linha - 1; } //abaixo pos.DefinirValores(Posicao.Linha + 1, Posicao.Coluna); while (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; if (Tab.peca(pos) != null && Tab.peca(pos).Cor != Cor) { break; } pos.Linha = pos.Linha + 1; } //direita pos.DefinirValores(Posicao.Linha, Posicao.Coluna + 1); while (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; if (Tab.peca(pos) != null && Tab.peca(pos).Cor != Cor) { break; } pos.Coluna = pos.Coluna + 1; } //esquerda pos.DefinirValores(Posicao.Linha, Posicao.Coluna - 1); while (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; if (Tab.peca(pos) != null && Tab.peca(pos).Cor != Cor) { break; } pos.Coluna = pos.Coluna - 1; } return(mat); }
public override bool[,] MovimentosPossiveis() { bool[,] mat = new bool[Tabuleiro.Linhas, Tabuleiro.Colunas]; Posicao pos = new Posicao(0, 0); //Acima pos.DefinirValores(Posicao.Linha - 1, Posicao.Coluna); while (Tabuleiro.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; //Força a parada do while quando houver uma peça adversaria. //O metodo PodeMover retorna True para peças adversarias. if (Tabuleiro.Peca(pos) != null && Tabuleiro.Peca(pos).Cor != Cor) { break; } pos.Linha -= 1; } //Abaixo pos.DefinirValores(Posicao.Linha + 1, Posicao.Coluna); while (Tabuleiro.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; //Força a parada do while quando houver uma peça adversaria. //O metodo PodeMover retorna True para peças adversarias. if (Tabuleiro.Peca(pos) != null && Tabuleiro.Peca(pos).Cor != Cor) { break; } pos.Linha += 1; } //Direita pos.DefinirValores(Posicao.Linha, Posicao.Coluna + 1); while (Tabuleiro.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; //Força a parada do while quando houver uma peça adversaria. //O metodo PodeMover retorna True para peças adversarias. if (Tabuleiro.Peca(pos) != null && Tabuleiro.Peca(pos).Cor != Cor) { break; } pos.Coluna += 1; } //Esquerda pos.DefinirValores(Posicao.Linha, Posicao.Coluna - 1); while (Tabuleiro.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; //Força a parada do while quando houver uma peça adversaria. //O metodo PodeMover retorna True para peças adversarias. if (Tabuleiro.Peca(pos) != null && Tabuleiro.Peca(pos).Cor != Cor) { break; } pos.Coluna -= 1; } return(mat); }
public override bool[,] MovimentosPossiveis() { bool[,] mat = new bool[Tab.Linhas, Tab.Colunas]; Posicao pos = new Posicao(0, 0); if (Cor == Cor.Branca) { pos.DefinirValores(Posicao.Linha - 1, Posicao.Coluna); if (Tab.PosicaoValida(pos) && Livre(pos)) { mat[pos.Linha, pos.Coluna] = true; } pos.DefinirValores(Posicao.Linha - 2, Posicao.Coluna); if (Tab.PosicaoValida(pos) && Livre(pos) && QtdeMovimentos == 0) { mat[pos.Linha, pos.Coluna] = true; } pos.DefinirValores(Posicao.Linha - 1, Posicao.Coluna - 1); if (Tab.PosicaoValida(pos) && ExisteInimigo(pos)) { mat[pos.Linha, pos.Coluna] = true; } pos.DefinirValores(Posicao.Linha - 1, Posicao.Coluna + 1); if (Tab.PosicaoValida(pos) && ExisteInimigo(pos)) { mat[pos.Linha, pos.Coluna] = true; } //#jogadaespecial en passant if (Posicao.Linha == 3) { Posicao esquerda = new Posicao(Posicao.Linha, Posicao.Coluna - 1); if (Tab.PosicaoValida(esquerda) && ExisteInimigo(esquerda) && Tab.Peca(esquerda) == partida.VulneravelEnpassant) { mat[esquerda.Linha - 1, esquerda.Coluna] = true; } Posicao direita = new Posicao(Posicao.Linha, Posicao.Coluna + 1); if (Tab.PosicaoValida(direita) && ExisteInimigo(direita) && Tab.Peca(direita) == partida.VulneravelEnpassant) { mat[direita.Linha - 1, direita.Coluna] = true; } } } else { pos.DefinirValores(Posicao.Linha + 1, Posicao.Coluna); if (Tab.PosicaoValida(pos) && Livre(pos)) { mat[pos.Linha, pos.Coluna] = true; } pos.DefinirValores(Posicao.Linha + 2, Posicao.Coluna); if (Tab.PosicaoValida(pos) && Livre(pos) && QtdeMovimentos == 0) { mat[pos.Linha, pos.Coluna] = true; } pos.DefinirValores(Posicao.Linha + 1, Posicao.Coluna - 1); if (Tab.PosicaoValida(pos) && ExisteInimigo(pos)) { mat[pos.Linha, pos.Coluna] = true; } pos.DefinirValores(Posicao.Linha + 1, Posicao.Coluna + 1); if (Tab.PosicaoValida(pos) && ExisteInimigo(pos)) { mat[pos.Linha, pos.Coluna] = true; } //#jogadaespecial en passant if (Posicao.Linha == 4) { Posicao esquerda = new Posicao(Posicao.Linha, Posicao.Coluna - 1); if (Tab.PosicaoValida(esquerda) && ExisteInimigo(esquerda) && Tab.Peca(esquerda) == partida.VulneravelEnpassant) { mat[esquerda.Linha + 1, esquerda.Coluna] = true; } Posicao direita = new Posicao(Posicao.Linha, Posicao.Coluna + 1); if (Tab.PosicaoValida(direita) && ExisteInimigo(direita) && Tab.Peca(direita) == partida.VulneravelEnpassant) { mat[direita.Linha + 1, direita.Coluna] = true; } } } return(mat); }
public override bool[,] MovimentosPossiveis() { bool[,] mat = new bool[tab.linhas, tab.colunas]; Posicao pos = new Posicao(0, 0); //norte pos.DefinirValores(posicao.linha - 1, posicao.coluna); while (tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.linha, pos.coluna] = true; if (tab.Peca(pos) != null && tab.Peca(pos).cor != cor) { break; } pos.linha = pos.linha - 1; } //sul pos.DefinirValores(posicao.linha + 1, posicao.coluna); while (tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.linha, pos.coluna] = true; if (tab.Peca(pos) != null && tab.Peca(pos).cor != cor) { break; } pos.linha = pos.linha + 1; } //leste pos.DefinirValores(posicao.linha, posicao.coluna + 1); while (tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.linha, pos.coluna] = true; if (tab.Peca(pos) != null && tab.Peca(pos).cor != cor) { break; } pos.coluna = pos.coluna + 1; } //oeste pos.DefinirValores(posicao.linha, posicao.coluna - 1); while (tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.linha, pos.coluna] = true; if (tab.Peca(pos) != null && tab.Peca(pos).cor != cor) { break; } pos.coluna = pos.coluna - 1; } //noroeste pos.DefinirValores(posicao.linha - 1, posicao.coluna - 1); while (tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.linha, pos.coluna] = true; if (tab.Peca(pos) != null && tab.Peca(pos).cor != cor) { break; } pos.DefinirValores(pos.linha - 1, pos.coluna - 1); } //nordeste pos.DefinirValores(posicao.linha - 1, posicao.coluna + 1); while (tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.linha, pos.coluna] = true; if (tab.Peca(pos) != null && tab.Peca(pos).cor != cor) { break; } pos.DefinirValores(pos.linha - 1, pos.coluna + 1); } //sudeste pos.DefinirValores(posicao.linha + 1, posicao.coluna - 1); while (tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.linha, pos.coluna] = true; if (tab.Peca(pos) != null && tab.Peca(pos).cor != cor) { break; } pos.DefinirValores(pos.linha + 1, pos.coluna - 1); } //sudoeste pos.DefinirValores(posicao.linha + 1, posicao.coluna - 1); while (tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.linha, pos.coluna] = true; if (tab.Peca(pos) != null && tab.Peca(pos).cor != cor) { break; } pos.DefinirValores(pos.linha + 1, pos.coluna - 1); } return(mat); }
public override bool[,] MovimentosPossiveis() { bool[,] mat = new bool[Tab.Linhas, Tab.Colunas]; Posicao pos = new Posicao(0, 0); //acima pos.DefinirValores(Posicao.Linha - 1, Posicao.Coluna); if (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //Diagonal Sup Direita pos.DefinirValores(Posicao.Linha - 1, Posicao.Coluna + 1); if (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //Direita pos.DefinirValores(Posicao.Linha, Posicao.Coluna + 1); if (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //Diagonal inferior Direita pos.DefinirValores(Posicao.Linha + 1, Posicao.Coluna + 1); if (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //Inferior pos.DefinirValores(Posicao.Linha + 1, Posicao.Coluna); if (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //Diagonal inferior esquerda pos.DefinirValores(Posicao.Linha + 1, Posicao.Coluna - 1); if (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //esquerda pos.DefinirValores(Posicao.Linha, Posicao.Coluna - 1); if (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //Diagonal Sup esquerda pos.DefinirValores(Posicao.Linha - 1, Posicao.Coluna - 1); if (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } return(mat); }
public override bool[,] MovimentosPossiveis() { bool[,] mat = new bool[Tab.Linhas, Tab.Colunas]; Posicao pos = new Posicao(0, 0); //cima pos.DefinirValores(PosicaoAtual.Linha - 1, PosicaoAtual.Coluna); if (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //ne pos.DefinirValores(PosicaoAtual.Linha - 1, PosicaoAtual.Coluna + 1); if (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //direita pos.DefinirValores(PosicaoAtual.Linha, PosicaoAtual.Coluna + 1); if (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //se pos.DefinirValores(PosicaoAtual.Linha + 1, PosicaoAtual.Coluna + 1); if (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //abaixo pos.DefinirValores(PosicaoAtual.Linha + 1, PosicaoAtual.Coluna); if (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //so pos.DefinirValores(PosicaoAtual.Linha + 1, PosicaoAtual.Coluna - 1); if (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //esquerda pos.DefinirValores(PosicaoAtual.Linha, PosicaoAtual.Coluna - 1); if (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //no pos.DefinirValores(PosicaoAtual.Linha - 1, PosicaoAtual.Coluna - 1); if (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //#jogadaespecial roque if (QuantidadeMovimentos == 0 && !partida.xeque) { Console.WriteLine("Entrou"); //Roque pequeno Posicao posicaoTorre1 = new Posicao(PosicaoAtual.Linha, PosicaoAtual.Coluna + 3); if (testeTorreParaRoque(posicaoTorre1)) { Posicao p1 = new Posicao(PosicaoAtual.Linha, PosicaoAtual.Coluna + 1); Posicao p2 = new Posicao(PosicaoAtual.Linha, PosicaoAtual.Coluna + 2); if (Tab.GetPeca(p1) == null && Tab.GetPeca(p2) == null) { mat[PosicaoAtual.Linha, PosicaoAtual.Coluna + 2] = true; } } //Roque grande Posicao posicaoTorre2 = new Posicao(PosicaoAtual.Linha, PosicaoAtual.Coluna - 4); if (testeTorreParaRoque(posicaoTorre2)) { Posicao p1 = new Posicao(PosicaoAtual.Linha, PosicaoAtual.Coluna - 1); Posicao p2 = new Posicao(PosicaoAtual.Linha, PosicaoAtual.Coluna - 2); Posicao p3 = new Posicao(PosicaoAtual.Linha, PosicaoAtual.Coluna - 3); if (Tab.GetPeca(p1) == null && Tab.GetPeca(p2) == null && Tab.GetPeca(p3) == null) { mat[PosicaoAtual.Linha, PosicaoAtual.Coluna - 2] = true; } } } return(mat); }
public override bool[,] MovimentosPossiveis() { bool[,] mat = new bool[tab.linhas, tab.colunas]; Posicao pos = new Posicao(0, 0); //ACIMA pos.DefinirValores(posicao.linha - 1, posicao.coluna); if (tab.posicaoValida(pos) && PodeMover(pos)) { mat[pos.linha, pos.coluna] = true; } //NORDESTE pos.DefinirValores(posicao.linha - 1, posicao.coluna + 1); if (tab.posicaoValida(pos) && PodeMover(pos)) { mat[pos.linha, pos.coluna] = true; } //DIREITA pos.DefinirValores(posicao.linha, posicao.coluna + 1); if (tab.posicaoValida(pos) && PodeMover(pos)) { mat[pos.linha, pos.coluna] = true; } //ACIMA pos.DefinirValores(posicao.linha - 1, posicao.coluna); if (tab.posicaoValida(pos) && PodeMover(pos)) { mat[pos.linha, pos.coluna] = true; } //SUDESTE pos.DefinirValores(posicao.linha + 1, posicao.coluna + 1); if (tab.posicaoValida(pos) && PodeMover(pos)) { mat[pos.linha, pos.coluna] = true; } //ABAIXO pos.DefinirValores(posicao.linha + 1, posicao.coluna); if (tab.posicaoValida(pos) && PodeMover(pos)) { mat[pos.linha, pos.coluna] = true; } //SUDOESTE pos.DefinirValores(posicao.linha + 1, posicao.coluna - 1); if (tab.posicaoValida(pos) && PodeMover(pos)) { mat[pos.linha, pos.coluna] = true; } //ESQUERDA pos.DefinirValores(posicao.linha, posicao.coluna - 1); if (tab.posicaoValida(pos) && PodeMover(pos)) { mat[pos.linha, pos.coluna] = true; } //NOROESTE pos.DefinirValores(posicao.linha - 1, posicao.coluna - 1); if (tab.posicaoValida(pos) && PodeMover(pos)) { mat[pos.linha, pos.coluna] = true; } return(mat); }
public override bool[,] MovimentosPossiveis() { bool[,] mat = new bool[Tab.Linhas, Tab.Colunas]; Posicao pos = new Posicao(0, 0); //acima pos.DefinirValores(this.Posicao.Linha - 1, this.Posicao.Coluna); if (Tab.PosicaoValida(pos) && this.PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //Nordeste pos.DefinirValores(this.Posicao.Linha - 1, this.Posicao.Coluna + 1); if (Tab.PosicaoValida(pos) && this.PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //Direita pos.DefinirValores(this.Posicao.Linha, this.Posicao.Coluna + 1); if (Tab.PosicaoValida(pos) && this.PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //sudeste pos.DefinirValores(this.Posicao.Linha + 1, this.Posicao.Coluna + 1); if (Tab.PosicaoValida(pos) && this.PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //abaixo pos.DefinirValores(this.Posicao.Linha + 1, this.Posicao.Coluna); if (Tab.PosicaoValida(pos) && this.PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //sudoeste pos.DefinirValores(this.Posicao.Linha + 1, this.Posicao.Coluna - 1); if (Tab.PosicaoValida(pos) && this.PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //Esquerda pos.DefinirValores(this.Posicao.Linha, this.Posicao.Coluna - 1); if (Tab.PosicaoValida(pos) && this.PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //Noroeste pos.DefinirValores(this.Posicao.Linha - 1, this.Posicao.Coluna - 1); if (Tab.PosicaoValida(pos) && this.PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //#Jogadaespecial roque if (this.QteMovimentos == 0 && !this.partida.Xeque) { //#Jogadaespecial roque pequeno Posicao posT1 = new Posicao(this.Posicao.Linha, this.Posicao.Coluna + 3); if (TesteTorreParaRoque(posT1)) { Posicao p1 = new Posicao(this.Posicao.Linha, this.Posicao.Coluna + 1); Posicao p2 = new Posicao(this.Posicao.Linha, this.Posicao.Coluna + 2); if (Tab.Peca(p1) == null && Tab.Peca(p2) == null) { mat[this.Posicao.Linha, this.Posicao.Coluna + 2] = true; } } //#Jogadaespecial roque grande Posicao posT2 = new Posicao(this.Posicao.Linha, this.Posicao.Coluna - 4); if (TesteTorreParaRoque(posT2)) { Posicao p1 = new Posicao(this.Posicao.Linha, this.Posicao.Coluna - 1); Posicao p2 = new Posicao(this.Posicao.Linha, this.Posicao.Coluna - 2); Posicao p3 = new Posicao(this.Posicao.Linha, this.Posicao.Coluna - 3); if (Tab.Peca(p1) == null && Tab.Peca(p2) == null && Tab.Peca(p3) == null) { mat[this.Posicao.Linha, this.Posicao.Coluna - 2] = true; } } } return(mat); }
public override bool[,] MovimentosPossiveis() { bool[,] mat = new bool[Tab.Linhas, Tab.Colunas]; Posicao pos = new Posicao(0, 0); // Valida se pode mover Norte pos.DefinirValores(Posicao.Linha - 1, Posicao.Coluna); if (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } // Valida se pode mover a Nordeste pos.DefinirValores(Posicao.Linha - 1, Posicao.Coluna + 1); if (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } // Valida se pode mover a leste pos.DefinirValores(Posicao.Linha, Posicao.Coluna + 1); if (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } // Valida se pode mover a sudeste pos.DefinirValores(Posicao.Linha + 1, Posicao.Coluna + 1); if (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } // Valida se pode mover a sul pos.DefinirValores(Posicao.Linha + 1, Posicao.Coluna); if (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } // Valida se pode mover a sudoeste pos.DefinirValores(Posicao.Linha + 1, Posicao.Coluna - 1); if (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } // Valida se pode mover a oeste pos.DefinirValores(Posicao.Linha, Posicao.Coluna - 1); if (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } // Valida se pode mover a noroeste pos.DefinirValores(Posicao.Linha - 1, Posicao.Coluna - 1); if (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } // #jogadaespecial roque if (QtdMovimentos == 0 && !Partida.Xeque) { // #jogadaespecial roque pequeno Posicao posT1 = new Posicao(Posicao.Linha, Posicao.Coluna + 3); if (TesteTorreParaRoque(posT1)) { Posicao p1 = new Posicao(Posicao.Linha, Posicao.Coluna + 1); Posicao p2 = new Posicao(Posicao.Linha, Posicao.Coluna + 2); if (Tab.GetPeca(p1) == null && Tab.GetPeca(p2) == null) { mat[Posicao.Linha, Posicao.Coluna + 2] = true; } } // #jogadaespecial roque grande Posicao posT2 = new Posicao(Posicao.Linha, Posicao.Coluna - 4); if (TesteTorreParaRoque(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.GetPeca(p1) == null && Tab.GetPeca(p2) == null && Tab.GetPeca(p3) == null) { mat[Posicao.Linha, Posicao.Coluna - 2] = true; } } } return(mat); }
public override bool[,] MovimentosPossiveis() { bool[,] mat = new bool[Tab.Linha, Tab.Coluna]; Posicao pos = new Posicao(0, 0); // acima pos.DefinirValores(Posicao.Linha - 1, Posicao.Coluna); if (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } // nordeste pos.DefinirValores(Posicao.Linha - 1, Posicao.Coluna + 1); if (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } // direita pos.DefinirValores(Posicao.Linha, Posicao.Coluna + 1); if (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } // sudeste pos.DefinirValores(Posicao.Linha + 1, Posicao.Coluna + 1); if (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } // abaixo pos.DefinirValores(Posicao.Linha + 1, Posicao.Coluna); if (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } // sudoeste pos.DefinirValores(Posicao.Linha + 1, Posicao.Coluna - 1); if (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } // esquerda pos.DefinirValores(Posicao.Linha, Posicao.Coluna - 1); if (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } // noroeste pos.DefinirValores(Posicao.Linha - 1, Posicao.Coluna - 1); if (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } return(mat); }
public override bool[,] MovimentosPossiveis() { bool[,] mat = new bool[tabuleiro.Linhas, tabuleiro.Colunas]; Posicao pos = new Posicao(0, 0); //acima pos.DefinirValores(posicao.Linha - 1, posicao.Coluna); if (tabuleiro.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //nordeste pos.DefinirValores(posicao.Linha - 1, posicao.Coluna + 1); if (tabuleiro.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //direita pos.DefinirValores(posicao.Linha, posicao.Coluna + 1); if (tabuleiro.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //sudeste pos.DefinirValores(posicao.Linha + 1, posicao.Coluna + 1); if (tabuleiro.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //abaixo pos.DefinirValores(posicao.Linha + 1, posicao.Coluna); if (tabuleiro.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //sudoeste pos.DefinirValores(posicao.Linha + 1, posicao.Coluna - 1); if (tabuleiro.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //esquerda pos.DefinirValores(posicao.Linha, posicao.Coluna - 1); if (tabuleiro.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //noroeste pos.DefinirValores(posicao.Linha - 1, posicao.Coluna - 1); if (tabuleiro.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //#JOGADAESPECIAL ROQUE if (QtdeMovimentos == 0 && !partida.Xeque) { //#JOGADAESPECIAL ROQUE PEQUENO Posicao posT1 = new Posicao(posicao.Linha, posicao.Coluna + 3); if (TesteTorreParaRoque(posT1)) { Posicao p1 = new Posicao(posicao.Linha, posicao.Coluna + 1); Posicao p2 = new Posicao(posicao.Linha, posicao.Coluna + 2); if (tabuleiro.peca(p1) == null && tabuleiro.peca(p2) == null) { mat[posicao.Linha, posicao.Coluna + 2] = true; } } //#JOGADAESPECIAL ROQUE GRANDE Posicao posT2 = new Posicao(posicao.Linha, posicao.Coluna - 4); if (TesteTorreParaRoque(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 (tabuleiro.peca(p1) == null && tabuleiro.peca(p2) == null && tabuleiro.peca(p3) == null) { mat[posicao.Linha, posicao.Coluna - 2] = true; } } } return(mat); }
public override bool[,] MovimentosPossiveis() { bool[,] mat = new bool[tabuleiro.Linhas, tabuleiro.Colunas]; Posicao pos = new Posicao(0, 0); // esquerda pos.DefinirValores(Posicao.Linha, Posicao.Coluna - 1); while (tabuleiro.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; if (tabuleiro.Peca(pos) != null && tabuleiro.Peca(pos).Cor != Cor) { break; } pos.DefinirValores(pos.Linha, pos.Coluna - 1); } // direita pos.DefinirValores(Posicao.Linha, Posicao.Coluna + 1); while (tabuleiro.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; if (tabuleiro.Peca(pos) != null && tabuleiro.Peca(pos).Cor != Cor) { break; } pos.DefinirValores(pos.Linha, pos.Coluna + 1); } // acima pos.DefinirValores(Posicao.Linha - 1, Posicao.Coluna); while (tabuleiro.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; if (tabuleiro.Peca(pos) != null && tabuleiro.Peca(pos).Cor != Cor) { break; } pos.DefinirValores(pos.Linha - 1, pos.Coluna); } // abaixo pos.DefinirValores(Posicao.Linha + 1, Posicao.Coluna); while (tabuleiro.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; if (tabuleiro.Peca(pos) != null && tabuleiro.Peca(pos).Cor != Cor) { break; } pos.DefinirValores(pos.Linha + 1, pos.Coluna); } // NO pos.DefinirValores(Posicao.Linha - 1, Posicao.Coluna - 1); while (tabuleiro.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; if (tabuleiro.Peca(pos) != null && tabuleiro.Peca(pos).Cor != Cor) { break; } pos.DefinirValores(pos.Linha - 1, pos.Coluna - 1); } // NE pos.DefinirValores(Posicao.Linha - 1, Posicao.Coluna + 1); while (tabuleiro.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; if (tabuleiro.Peca(pos) != null && tabuleiro.Peca(pos).Cor != Cor) { break; } pos.DefinirValores(pos.Linha - 1, pos.Coluna + 1); } // SE pos.DefinirValores(Posicao.Linha + 1, Posicao.Coluna + 1); while (tabuleiro.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; if (tabuleiro.Peca(pos) != null && tabuleiro.Peca(pos).Cor != Cor) { break; } pos.DefinirValores(pos.Linha + 1, pos.Coluna + 1); } // SO pos.DefinirValores(Posicao.Linha + 1, Posicao.Coluna - 1); while (tabuleiro.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; if (tabuleiro.Peca(pos) != null && tabuleiro.Peca(pos).Cor != Cor) { break; } pos.DefinirValores(pos.Linha + 1, pos.Coluna - 1); } return(mat); }
public override bool[,] MovimentosPossiveis() { bool[,] mat = new bool[Tab.Linhas, Tab.Colunas]; Posicao pos = new Posicao(0, 0); //acima pos.DefinirValores(Posicao.Linha - 1, Posicao.Coluna); if (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //ne pos.DefinirValores(Posicao.Linha - 1, Posicao.Coluna + 1); if (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //direita pos.DefinirValores(Posicao.Linha, Posicao.Coluna + 1); if (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //se pos.DefinirValores(Posicao.Linha + 1, Posicao.Coluna + 1); if (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //abaixo pos.DefinirValores(Posicao.Linha + 1, Posicao.Coluna); if (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //so pos.DefinirValores(Posicao.Linha + 1, Posicao.Coluna - 1); if (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //esquerda pos.DefinirValores(Posicao.Linha, Posicao.Coluna - 1); if (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //no pos.DefinirValores(Posicao.Linha - 1, Posicao.Coluna - 1); if (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } // #jogadaespecial: Roque //if (QtdMovimentos == 0 & !partida.Xeque) //{ // //Roque Pequeno // Posicao posT1 = new Posicao(Posicao.Linha, Posicao.Coluna + 3); // if (TesteTorreParaRoque(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; // } // } // //Roque Grande // Posicao posT2 = new Posicao(Posicao.Linha, Posicao.Coluna - 4); // if (TesteTorreParaRoque(posT1)) // { // 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); }
public override bool[,] MovimentosPossiveis() { bool[,] mat = new bool[Tab.Linhas, Tab.Colunas]; Posicao pos = new Posicao(0, 0); //Acima pos.DefinirValores(Posicao.Linha - 1, Posicao.Coluna); if (Tab.PossicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //Nordeste pos.DefinirValores(Posicao.Linha - 1, Posicao.Coluna + 1); if (Tab.PossicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //Direita pos.DefinirValores(Posicao.Linha, Posicao.Coluna + 1); if (Tab.PossicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //Suldeste pos.DefinirValores(Posicao.Linha + 1, Posicao.Coluna + 1); if (Tab.PossicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //Abaixo pos.DefinirValores(Posicao.Linha + 1, Posicao.Coluna); if (Tab.PossicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //Suldoeste pos.DefinirValores(Posicao.Linha + 1, Posicao.Coluna - 1); if (Tab.PossicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //Esquerda pos.DefinirValores(Posicao.Linha, Posicao.Coluna - 1); if (Tab.PossicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //Noroeste pos.DefinirValores(Posicao.Linha - 1, Posicao.Coluna - 1); if (Tab.PossicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //#jogada especiial: Roque if (QtdMovimento == 0 && !Partida.Xeque) { //Roquepequeno Posicao PosT1 = new Posicao(Posicao.Linha, Posicao.Coluna + 3); if (TesteTorreParaRoque(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; } } //RoqueGrande Posicao PosT2 = new Posicao(Posicao.Linha, Posicao.Coluna - 4); if (TesteTorreParaRoque(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); }
public override bool[,] MovimentosPossiveis() { bool[,] mat = new bool[Tabuleiro.Linhas, Tabuleiro.Colunas]; Posicao pos = new Posicao(0, 0); //Acima pos.DefinirValores(Posicao.Linha - 1, Posicao.Coluna); if (Tabuleiro.PosicaValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //Nordeste pos.DefinirValores(Posicao.Linha - 1, Posicao.Coluna + 1); if (Tabuleiro.PosicaValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //Direita pos.DefinirValores(Posicao.Linha, Posicao.Coluna + 1); if (Tabuleiro.PosicaValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //Sudeste pos.DefinirValores(Posicao.Linha + 1, Posicao.Coluna + 1); if (Tabuleiro.PosicaValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //Abaixo pos.DefinirValores(Posicao.Linha + 1, Posicao.Coluna); if (Tabuleiro.PosicaValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //Sudoeste pos.DefinirValores(Posicao.Linha + 1, Posicao.Coluna - 1); if (Tabuleiro.PosicaValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //Esquerda pos.DefinirValores(Posicao.Linha, Posicao.Coluna - 1); if (Tabuleiro.PosicaValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //Noroeste pos.DefinirValores(Posicao.Linha - 1, Posicao.Coluna - 1); if (Tabuleiro.PosicaValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //JOGADAS ESPECIAIS if (QtdMovimentos == 0 && !_partida.Xeque) { //Roque PEQUENO Posicao posT1 = new Posicao(Posicao.Linha, Posicao.Coluna + 3); if (TesteTorreParaRoque(posT1)) { Posicao p1 = new Posicao(Posicao.Linha, Posicao.Coluna + 1); Posicao p2 = new Posicao(Posicao.Linha, Posicao.Coluna + 2); if (Tabuleiro.Peca(p1) == null && Tabuleiro.Peca(p2) == null) { mat[Posicao.Linha, Posicao.Coluna + 2] = true; } } Posicao posT2 = new Posicao(Posicao.Linha, Posicao.Coluna - 4); if (TesteTorreParaRoque(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 (Tabuleiro.Peca(p1) == null && Tabuleiro.Peca(p2) == null && Tabuleiro.Peca(p3) == null) { mat[Posicao.Linha, Posicao.Coluna - 2] = true; } } } return(mat); }
public override bool[,] MovimentosPossiveisXequeMate() { bool[,] mat = new bool[tab.linhas, tab.colunas]; Posicao pos = new Posicao(0, 0); //ACIMA Peca pecaOrigem = tab.RetornaMatrizPeca(posicao.linha, posicao.coluna); pos.DefinirValores(posicao.linha - 1, posicao.coluna); while (tab.posicaoValida(pos) && PodeMover(pos)) { if (tab.RetornaMatrizPeca(pos) != null && tab.RetornaMatrizPeca(pos).cor != cor) { Peca p = tab.RetornaMatrizPeca(pos); if (p is Rei) { mat[pos.linha, pos.coluna] = true; while (p != pecaOrigem) { pos.linha = pos.linha + 1; p = tab.RetornaMatrizPeca(pos); mat[pos.linha, pos.coluna] = true; } break; } } pos.linha = pos.linha - 1; } //ABAIXO pos.DefinirValores(posicao.linha + 1, posicao.coluna); while (tab.posicaoValida(pos) && PodeMover(pos)) { if (tab.RetornaMatrizPeca(pos) != null && tab.RetornaMatrizPeca(pos).cor != cor) { Peca p = tab.RetornaMatrizPeca(pos); if (p is Rei) { while (p != pecaOrigem) { pos.linha = pos.linha - 1; p = tab.RetornaMatrizPeca(pos); mat[pos.linha, pos.coluna] = true; } break; } } pos.linha = pos.linha + 1; } //DIREITA pos.DefinirValores(posicao.linha, posicao.coluna + 1); while (tab.posicaoValida(pos) && PodeMover(pos)) { if (tab.RetornaMatrizPeca(pos) != null && tab.RetornaMatrizPeca(pos).cor != cor) { Peca p = tab.RetornaMatrizPeca(pos); if (p is Rei) { while (p != pecaOrigem) { pos.coluna = pos.coluna - 1; p = tab.RetornaMatrizPeca(pos); mat[pos.linha, pos.coluna] = true; } break; } } pos.coluna = pos.coluna + 1; } //ESQUERDA pos.DefinirValores(posicao.linha, posicao.coluna - 1); while (tab.posicaoValida(pos) && PodeMover(pos)) { if (tab.RetornaMatrizPeca(pos) != null && tab.RetornaMatrizPeca(pos).cor != cor) { Peca p = tab.RetornaMatrizPeca(pos); if (p is Rei) { while (p != pecaOrigem) { pos.coluna = pos.coluna + 1; p = tab.RetornaMatrizPeca(pos); mat[pos.linha, pos.coluna] = true; } break; } } pos.coluna = pos.coluna - 1; } return(mat); }
public override bool[,] Movimentospossiveis() { Posicao pos = new Posicao(0, 0); bool[,] mat = new bool[tab.linhas, tab.colunas]; //implementar movimentos Peão if (cor == Cor.Branca) { //# jogada en passant if (posicao.linha == 3) { Posicao esquerda = new Posicao(posicao.linha, posicao.coluna - 1); if (tab.PosicaoValida(esquerda) && ExisteInimigo(esquerda) && tab.peca(esquerda) == partida.VuneravelEnPassant) { mat[esquerda.linha - 1, esquerda.coluna] = true; } Posicao direita = new Posicao(posicao.linha, posicao.coluna + 1); if (tab.PosicaoValida(direita) && ExisteInimigo(direita) && tab.peca(direita) == partida.VuneravelEnPassant) { mat[direita.linha - 1, direita.coluna] = true; } } pos.DefinirValores(posicao.linha - 1, posicao.coluna); if (tab.PosicaoValida(pos) && Livre(pos)) { mat[pos.linha, pos.coluna] = true; } pos.DefinirValores(posicao.linha - 2, posicao.coluna); if (tab.PosicaoValida(pos) && Livre(pos) && qtemovimentos == 0) { mat[pos.linha, pos.coluna] = true; } pos.DefinirValores(posicao.linha - 1, posicao.coluna - 1); if (tab.PosicaoValida(pos) && ExisteInimigo(pos)) { mat[pos.linha, pos.coluna] = true; } pos.DefinirValores(posicao.linha - 1, posicao.coluna + 1); if (tab.PosicaoValida(pos) && ExisteInimigo(pos)) { mat[pos.linha, pos.coluna] = true; } } else { //# jogada en passant if (posicao.linha == 4) { Posicao esquerda = new Posicao(posicao.linha, posicao.coluna - 1); if (tab.PosicaoValida(esquerda) && ExisteInimigo(esquerda) && tab.peca(esquerda) == partida.VuneravelEnPassant) { mat[esquerda.linha + 1, esquerda.coluna] = true; } Posicao direita = new Posicao(posicao.linha, posicao.coluna + 1); if (tab.PosicaoValida(direita) && ExisteInimigo(direita) && tab.peca(direita) == partida.VuneravelEnPassant) { mat[direita.linha + 1, direita.coluna] = true; } } //Movimentos normais pos.DefinirValores(posicao.linha + 1, posicao.coluna); if (tab.PosicaoValida(pos) && Livre(pos)) { mat[pos.linha, pos.coluna] = true; } pos.DefinirValores(posicao.linha + 2, posicao.coluna); if (tab.PosicaoValida(pos) && Livre(pos) && qtemovimentos == 0) { mat[pos.linha, pos.coluna] = true; } pos.DefinirValores(posicao.linha + 1, posicao.coluna - 1); if (tab.PosicaoValida(pos) && ExisteInimigo(pos)) { mat[pos.linha, pos.coluna] = true; } pos.DefinirValores(posicao.linha + 1, posicao.coluna + 1); if (tab.PosicaoValida(pos) && ExisteInimigo(pos)) { mat[pos.linha, pos.coluna] = true; } } return(mat); }
public override bool[,] MovimentosPosiveis() { bool[,] matriz = new bool[Tabuleiro.Linhas, Tabuleiro.Colunas]; Posicao posicao = new Posicao(0, 0); //acima posicao.DefinirValores(Posicao.Linha - 1, Posicao.Coluna); if (Tabuleiro.PosicaoValida(posicao) && PodeMover(posicao)) { matriz[posicao.Linha, posicao.Coluna] = true; } //nordeste posicao.DefinirValores(Posicao.Linha - 1, Posicao.Coluna + 1); if (Tabuleiro.PosicaoValida(posicao) && PodeMover(posicao)) { matriz[posicao.Linha, posicao.Coluna] = true; } //direita posicao.DefinirValores(Posicao.Linha, Posicao.Coluna + 1); if (Tabuleiro.PosicaoValida(posicao) && PodeMover(posicao)) { matriz[posicao.Linha, posicao.Coluna] = true; } //sudeste posicao.DefinirValores(Posicao.Linha + 1, Posicao.Coluna + 1); if (Tabuleiro.PosicaoValida(posicao) && PodeMover(posicao)) { matriz[posicao.Linha, posicao.Coluna] = true; } //abaixo posicao.DefinirValores(Posicao.Linha + 1, Posicao.Coluna); if (Tabuleiro.PosicaoValida(posicao) && PodeMover(posicao)) { matriz[posicao.Linha, posicao.Coluna] = true; } //sudoeste posicao.DefinirValores(Posicao.Linha + 1, Posicao.Coluna - 1); if (Tabuleiro.PosicaoValida(posicao) && PodeMover(posicao)) { matriz[posicao.Linha, posicao.Coluna] = true; } //esquerda posicao.DefinirValores(Posicao.Linha, Posicao.Coluna - 1); if (Tabuleiro.PosicaoValida(posicao) && PodeMover(posicao)) { matriz[posicao.Linha, posicao.Coluna] = true; } //noroeste posicao.DefinirValores(Posicao.Linha - 1, Posicao.Coluna - 1); if (Tabuleiro.PosicaoValida(posicao) && PodeMover(posicao)) { matriz[posicao.Linha, posicao.Coluna] = true; } //#jogadaEspecial if (QtdMovimentos == 0 && !Partida.Xeque) { //roque pequeno Posicao posTorre1 = new Posicao(Posicao.Linha, Posicao.Coluna + 3); if (TesteTorreParaRoque(posTorre1)) { Posicao p1 = new Posicao(Posicao.Linha, Posicao.Coluna + 1); Posicao p2 = new Posicao(Posicao.Linha, Posicao.Coluna + 2); if (Tabuleiro.Peca(p1) == null && Tabuleiro.Peca(p2) == null) { //não vou utilizar o definir posicao, pois p1/p2 garantem que é possível matriz[Posicao.Linha, Posicao.Coluna + 2] = true; } } //roque grande Posicao posTorre2 = new Posicao(Posicao.Linha, Posicao.Coluna - 4); if (TesteTorreParaRoque(posTorre2)) { 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 (Tabuleiro.Peca(p1) == null && Tabuleiro.Peca(p2) == null && Tabuleiro.Peca(p3) == null) { matriz[Posicao.Linha, Posicao.Coluna - 2] = true; } } } return(matriz); }
public override bool[,] MovimentosPossiveis() { bool[,] mat = new bool[Tabuleiro.Linhas, Tabuleiro.Colunas]; Posicao pos = new Posicao(0, 0); //L ACIMA ESQUERDA pos.DefinirValores(Posicao.Linha - 2, Posicao.Coluna - 1); if (Tabuleiro.PosicaValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } pos.DefinirValores(Posicao.Linha - 1, Posicao.Coluna - 2); if (Tabuleiro.PosicaValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //L ACIMA DIREITA pos.DefinirValores(Posicao.Linha - 2, Posicao.Coluna + 1); if (Tabuleiro.PosicaValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } pos.DefinirValores(Posicao.Linha - 1, Posicao.Coluna + 2); if (Tabuleiro.PosicaValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //L ABAIXO ESQUERDA pos.DefinirValores(Posicao.Linha + 2, Posicao.Coluna - 1); if (Tabuleiro.PosicaValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } pos.DefinirValores(Posicao.Linha + 1, Posicao.Coluna - 2); if (Tabuleiro.PosicaValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //Direita pos.DefinirValores(Posicao.Linha + 2, Posicao.Coluna + 1); if (Tabuleiro.PosicaValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } pos.DefinirValores(Posicao.Linha + 1, Posicao.Coluna - 2); if (Tabuleiro.PosicaValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } return(mat); }
public override bool[,] MovimentosPosiveis() { bool[,] matriz = new bool[Tabuleiro.Linhas, Tabuleiro.Colunas]; Posicao posicao = new Posicao(0, 0); //acima posicao.DefinirValores(Posicao.Linha - 1, Posicao.Coluna); while (Tabuleiro.PosicaoValida(posicao) && PodeMover(posicao)) { matriz[posicao.Linha, posicao.Coluna] = true; if (Tabuleiro.Peca(posicao) != null && Tabuleiro.Peca(posicao).Cor != Cor) { break; } posicao.Linha = posicao.Linha - 1; } //abaixo posicao.DefinirValores(Posicao.Linha + 1, Posicao.Coluna); while (Tabuleiro.PosicaoValida(posicao) && PodeMover(posicao)) { matriz[posicao.Linha, posicao.Coluna] = true; if (Tabuleiro.Peca(posicao) != null && Tabuleiro.Peca(posicao).Cor != Cor) { break; } posicao.Linha = posicao.Linha + 1; } //direita posicao.DefinirValores(Posicao.Linha, Posicao.Coluna + 1); while (Tabuleiro.PosicaoValida(posicao) && PodeMover(posicao)) { matriz[posicao.Linha, posicao.Coluna] = true; if (Tabuleiro.Peca(posicao) != null && Tabuleiro.Peca(posicao).Cor != Cor) { break; } posicao.Coluna = posicao.Coluna + 1; } //esquerda posicao.DefinirValores(Posicao.Linha, Posicao.Coluna - 1); while (Tabuleiro.PosicaoValida(posicao) && PodeMover(posicao)) { matriz[posicao.Linha, posicao.Coluna] = true; if (Tabuleiro.Peca(posicao) != null && Tabuleiro.Peca(posicao).Cor != Cor) { break; } posicao.Coluna = posicao.Coluna - 1; } //noroeste posicao.DefinirValores(Posicao.Linha - 1, Posicao.Coluna - 1); while (Tabuleiro.PosicaoValida(posicao) && PodeMover(posicao)) { matriz[posicao.Linha, posicao.Coluna] = true; if (Tabuleiro.Peca(posicao) != null && Tabuleiro.Peca(posicao).Cor != Cor) { break; } posicao.DefinirValores(posicao.Linha - 1, posicao.Coluna - 1); } //nordeste posicao.DefinirValores(Posicao.Linha - 1, Posicao.Coluna + 1); while (Tabuleiro.PosicaoValida(posicao) && PodeMover(posicao)) { matriz[posicao.Linha, posicao.Coluna] = true; if (Tabuleiro.Peca(posicao) != null && Tabuleiro.Peca(posicao).Cor != Cor) { break; } posicao.DefinirValores(posicao.Linha - 1, posicao.Coluna + 1); } //sudeste posicao.DefinirValores(Posicao.Linha + 1, Posicao.Coluna + 1); while (Tabuleiro.PosicaoValida(posicao) && PodeMover(posicao)) { matriz[posicao.Linha, posicao.Coluna] = true; if (Tabuleiro.Peca(posicao) != null && Tabuleiro.Peca(posicao).Cor != Cor) { break; } posicao.DefinirValores(posicao.Linha + 1, posicao.Coluna + 1); } //sudoeste posicao.DefinirValores(Posicao.Linha + 1, Posicao.Coluna - 1); while (Tabuleiro.PosicaoValida(posicao) && PodeMover(posicao)) { matriz[posicao.Linha, posicao.Coluna] = true; if (Tabuleiro.Peca(posicao) != null && Tabuleiro.Peca(posicao).Cor != Cor) { break; } posicao.DefinirValores(posicao.Linha + 1, posicao.Coluna - 1); } return(matriz); }
public override bool[,] MovimentosPossiveis() { bool[,] mat = new bool[Tab.linhas, Tab.colunas]; Posicao pos = new Posicao(0, 0); //Acima pos.DefinirValores(Posicao.linha - 1, Posicao.coluna); if (Tab.PosicaoValida(pos) && podeMover(pos)) { mat[pos.linha, pos.coluna] = true; } //Canto superior direito pos.DefinirValores(Posicao.linha - 1, Posicao.coluna + 1); if (Tab.PosicaoValida(pos) && podeMover(pos)) { mat[pos.linha, pos.coluna] = true; } //Direita pos.DefinirValores(Posicao.linha, Posicao.coluna + 1); if (Tab.PosicaoValida(pos) && podeMover(pos)) { mat[pos.linha, pos.coluna] = true; } //Canto inferior direito pos.DefinirValores(Posicao.linha + 1, Posicao.coluna + 1); if (Tab.PosicaoValida(pos) && podeMover(pos)) { mat[pos.linha, pos.coluna] = true; } //Abaixo pos.DefinirValores(Posicao.linha + 1, Posicao.coluna); if (Tab.PosicaoValida(pos) && podeMover(pos)) { mat[pos.linha, pos.coluna] = true; } //Canto inferior esquerdo pos.DefinirValores(Posicao.linha + 1, Posicao.coluna - 1); if (Tab.PosicaoValida(pos) && podeMover(pos)) { mat[pos.linha, pos.coluna] = true; } //Esquerda pos.DefinirValores(Posicao.linha, Posicao.coluna - 1); if (Tab.PosicaoValida(pos) && podeMover(pos)) { mat[pos.linha, pos.coluna] = true; } //Canto superior esquerdo pos.DefinirValores(Posicao.linha - 1, Posicao.coluna - 1); if (Tab.PosicaoValida(pos) && podeMover(pos)) { mat[pos.linha, pos.coluna] = true; } //#Jogada especial roque if (QteMovimentos == 0 && !partida.Xeque) { // #Jogada especial roque pequeno Posicao posT1 = new Posicao(Posicao.linha, Posicao.coluna + 3); if (TesteTorreParaRoque(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; } } // #Jogada especial roque grande Posicao posT2 = new Posicao(Posicao.linha, Posicao.coluna - 4); if (TesteTorreParaRoque(posT1)) { 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); }
public override bool[,] MovimentosPossiveis() { bool[,] mat = new bool[Tabuleiro.Linhas, Tabuleiro.Colunas]; Posicao pos = new Posicao(0, 0); //acima pos.DefinirValores(Posicao.Linha - 1, Posicao.Coluna); if (Tabuleiro.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //ne pos.DefinirValores(Posicao.Linha - 1, Posicao.Coluna + 1); if (Tabuleiro.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //direita pos.DefinirValores(Posicao.Linha, Posicao.Coluna + 1); if (Tabuleiro.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //se pos.DefinirValores(Posicao.Linha + 1, Posicao.Coluna + 1); if (Tabuleiro.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //abaixo pos.DefinirValores(Posicao.Linha + 1, Posicao.Coluna); if (Tabuleiro.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //so pos.DefinirValores(Posicao.Linha + 1, Posicao.Coluna - 1); if (Tabuleiro.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //esquerda pos.DefinirValores(Posicao.Linha, Posicao.Coluna - 1); if (Tabuleiro.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //no pos.DefinirValores(Posicao.Linha - 1, Posicao.Coluna - 1); if (Tabuleiro.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //#jogada especial roque if (QtdeMovimentos == 0 && !Partida.Xeque) { //# 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 (Tabuleiro.Peca(p1) == null && Tabuleiro.Peca(p2) == null) { mat[Posicao.Linha, Posicao.Coluna + 2] = true; } } } //# 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 (Tabuleiro.Peca(p1) == null && Tabuleiro.Peca(p2) == null && Tabuleiro.Peca(p3) == null) { mat[Posicao.Linha, Posicao.Coluna - 2] = true; } } return(mat); }
public override bool[,] MovimentosPossiveis() { bool[,] mat = new bool[Tab.Linhas, Tab.Colunas]; Posicao pos = new Posicao(0, 0); //cima pos.DefinirValores(Posicao.Linha - 1, Posicao.Coluna); while (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; if (Tab.Peca(pos) != null) { break; } pos.DefinirValores(pos.Linha - 1, pos.Coluna); } //direita pos.DefinirValores(Posicao.Linha, Posicao.Coluna + 1); while (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; if (Tab.Peca(pos) != null) { break; } pos.DefinirValores(pos.Linha, pos.Coluna + 1); } //baixo pos.DefinirValores(Posicao.Linha + 1, Posicao.Coluna); while (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; if (Tab.Peca(pos) != null) { break; } pos.DefinirValores(pos.Linha + 1, pos.Coluna); } //esquerda pos.DefinirValores(Posicao.Linha, Posicao.Coluna - 1); while (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; if (Tab.Peca(pos) != null) { break; } pos.DefinirValores(pos.Linha, pos.Coluna - 1); } return(mat); }
public override bool[,] MovimentosPossiveis() { bool[,] aux = new bool[Tab.Linhas, Tab.Colunas]; Posicao pos = new Posicao(0, 0); if (Cor == Cor.Branca) { pos.DefinirValores(Posicao.linha - 1, Posicao.coluna); if (Tab.PosicaoValida(pos) && Livre(pos)) { aux[pos.linha, pos.coluna] = true; } pos.DefinirValores(Posicao.linha - 2, Posicao.coluna); if (Tab.PosicaoValida(pos) && Livre(pos) && QteDeMovimentos == 0) { aux[pos.linha, pos.coluna] = true; } pos.DefinirValores(Posicao.linha - 1, Posicao.coluna + 1); if (Tab.PosicaoValida(pos) && ExisteInimigo(pos)) { aux[pos.linha, pos.coluna] = true; } pos.DefinirValores(Posicao.linha - 1, Posicao.coluna - 1); if (Tab.PosicaoValida(pos) && ExisteInimigo(pos)) { aux[pos.linha, pos.coluna] = true; } //#JogadaEspecial - En Passant if (Posicao.linha == 3) { Posicao esquerda = new Posicao(Posicao.linha, Posicao.coluna - 1); if (Tab.PosicaoValida(esquerda) && ExisteInimigo(esquerda) && Tab.QualPeca(esquerda) == _partida.VulneravelEnPassant) { aux[2, esquerda.coluna] = true; } Posicao direita = new Posicao(Posicao.linha, Posicao.coluna + 1); if (Tab.PosicaoValida(direita) && ExisteInimigo(direita) && Tab.QualPeca(direita) == _partida.VulneravelEnPassant) { aux[2, direita.coluna] = true; } } } else { pos.DefinirValores(Posicao.linha + 1, Posicao.coluna); if (Tab.PosicaoValida(pos) && Livre(pos)) { aux[pos.linha, pos.coluna] = true; } pos.DefinirValores(Posicao.linha + 2, Posicao.coluna); if (Tab.PosicaoValida(pos) && Livre(pos) && QteDeMovimentos == 0) { aux[pos.linha, pos.coluna] = true; } pos.DefinirValores(Posicao.linha + 1, Posicao.coluna + 1); if (Tab.PosicaoValida(pos) && ExisteInimigo(pos)) { aux[pos.linha, pos.coluna] = true; } pos.DefinirValores(Posicao.linha + 1, Posicao.coluna - 1); if (Tab.PosicaoValida(pos) && ExisteInimigo(pos)) { aux[pos.linha, pos.coluna] = true; } //#JogadaEspecial - En Passant if (Posicao.linha == 4) { Posicao esquerda = new Posicao(Posicao.linha, Posicao.coluna - 1); if (Tab.PosicaoValida(esquerda) && ExisteInimigo(esquerda) && Tab.QualPeca(esquerda) == _partida.VulneravelEnPassant) { aux[5, esquerda.coluna] = true; } Posicao direita = new Posicao(Posicao.linha, Posicao.coluna + 1); if (Tab.PosicaoValida(direita) && ExisteInimigo(direita) && Tab.QualPeca(direita) == _partida.VulneravelEnPassant) { aux[5, direita.coluna] = true; } } } return(aux); }
public override bool[,] MovimentosPossiveis() { bool[,] mat = new bool[Tab.Linhas, Tab.Colunas]; Posicao pos = new Posicao(0, 0); //Esquerda pos.DefinirValores(Posicao.Linha, Posicao.Coluna - 1); while (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; if (Tab.peca(pos) != null && Tab.peca(pos).Cor != Cor) { break; } pos.DefinirValores(pos.Linha, pos.Coluna - 1); } //Direira pos.DefinirValores(Posicao.Linha, Posicao.Coluna + 1); while (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; if (Tab.peca(pos) != null && Tab.peca(pos).Cor != Cor) { break; } pos.DefinirValores(pos.Linha, pos.Coluna + 1); } //Acima pos.DefinirValores(Posicao.Linha - 1, Posicao.Coluna); while (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; if (Tab.peca(pos) != null && Tab.peca(pos).Cor != Cor) { break; } pos.DefinirValores(pos.Linha - 1, pos.Coluna); } //Abaixo pos.DefinirValores(Posicao.Linha + 1, Posicao.Coluna); while (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; if (Tab.peca(pos) != null && Tab.peca(pos).Cor != Cor) { break; } pos.DefinirValores(pos.Linha + 1, pos.Coluna); } //NO pos.DefinirValores(Posicao.Linha - 1, Posicao.Coluna - 1); while (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; if (Tab.peca(pos) != null && Tab.peca(pos).Cor != Cor) { break; } pos.DefinirValores(pos.Linha - 1, pos.Coluna - 1); } //NE pos.DefinirValores(Posicao.Linha - 1, Posicao.Coluna + 1); while (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; if (Tab.peca(pos) != null && Tab.peca(pos).Cor != Cor) { break; } pos.DefinirValores(pos.Linha - 1, pos.Coluna + 1); } //SE pos.DefinirValores(Posicao.Linha + 1, Posicao.Coluna + 1); while (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; if (Tab.peca(pos) != null && Tab.peca(pos).Cor != Cor) { break; } pos.DefinirValores(pos.Linha + 1, pos.Coluna + 1); } //SO pos.DefinirValores(Posicao.Linha + 1, Posicao.Coluna - 1); while (Tab.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; if (Tab.peca(pos) != null && Tab.peca(pos).Cor != Cor) { break; } pos.DefinirValores(pos.Linha + 1, pos.Coluna - 1); } return(mat); }