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) { //roque pequeno Posicao posT1 = new Posicao(posicao.linha, posicao.coluna + 3); if (testeParaRoque(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 (testeParaRoque(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.posicaoValida(pos) && podeMover(pos)) { mat[pos.linha, pos.coluna] = true; } //Esquerda pos.definirValores(posicao.linha + 1, posicao.coluna); 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; } //abaixo 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; } //se pos.definirValores(posicao.linha + 1, 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; } //so pos.definirValores(posicao.linha + 1, 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; } return(mat); }
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); } // 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.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); }
public override bool[,] movimentosPossiveis() { bool[,] matriz = 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)) { matriz[pos.Linha, pos.Coluna] = true; } pos.definirValores(Posicao.Linha - 2, Posicao.Coluna); if (Tab.posicaoValida(pos) && livre(pos) && QteMovimentos == 0) { matriz[pos.Linha, pos.Coluna] = true; } pos.definirValores(Posicao.Linha - 1, Posicao.Coluna - 1); if (Tab.posicaoValida(pos) && existeInimigo(pos)) { matriz[pos.Linha, pos.Coluna] = true; } pos.definirValores(Posicao.Linha - 1, Posicao.Coluna + 1); if (Tab.posicaoValida(pos) && existeInimigo(pos)) { matriz[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) { matriz[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) { matriz[direita.Linha - 1, direita.Coluna] = true; } } } else { pos.definirValores(Posicao.Linha + 1, Posicao.Coluna); if (Tab.posicaoValida(pos) && livre(pos)) { matriz[pos.Linha, pos.Coluna] = true; } pos.definirValores(Posicao.Linha + 2, Posicao.Coluna); if (Tab.posicaoValida(pos) && livre(pos) && QteMovimentos == 0) { matriz[pos.Linha, pos.Coluna] = true; } pos.definirValores(Posicao.Linha + 1, Posicao.Coluna - 1); if (Tab.posicaoValida(pos) && existeInimigo(pos)) { matriz[pos.Linha, pos.Coluna] = true; } pos.definirValores(Posicao.Linha + 1, Posicao.Coluna + 1); if (Tab.posicaoValida(pos) && existeInimigo(pos)) { matriz[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) { matriz[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) { 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); 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 - 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 - 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[,] 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); //Posição acima pos.definirValores(posicao.linha - 1, posicao.coluna); if (tab.posicaoValida(pos) && podeMover(pos)) { mat[pos.linha, pos.coluna] = true; } //Posição nordeste pos.definirValores(posicao.linha - 1, posicao.coluna + 1); if (tab.posicaoValida(pos) && podeMover(pos)) { mat[pos.linha, pos.coluna] = true; } //Posição direita pos.definirValores(posicao.linha, posicao.coluna + 1); if (tab.posicaoValida(pos) && podeMover(pos)) { mat[pos.linha, pos.coluna] = true; } //Posição sudeste pos.definirValores(posicao.linha + 1, posicao.coluna + 1); if (tab.posicaoValida(pos) && podeMover(pos)) { mat[pos.linha, pos.coluna] = true; } //Posição abaixo pos.definirValores(posicao.linha + 1, posicao.coluna); if (tab.posicaoValida(pos) && podeMover(pos)) { mat[pos.linha, pos.coluna] = true; } //Posição sudoeste pos.definirValores(posicao.linha + 1, posicao.coluna - 1); if (tab.posicaoValida(pos) && podeMover(pos)) { mat[pos.linha, pos.coluna] = true; } //Posição esquerda pos.definirValores(posicao.linha, posicao.coluna - 1); if (tab.posicaoValida(pos) && podeMover(pos)) { mat[pos.linha, pos.coluna] = true; } //Posição 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) { //Roque curto 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; } } // 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); }
public override bool[,] movimentosPossiveis() { bool[,] mat = new bool[tab.linhas, tab.colunas]; Posicao pos = new Posicao(0, 0); //ESQUERDA pos.definirValores(pos.linha, pos.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); } //DIREITA pos.definirValores(pos.linha, pos.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); } //ABAIXO pos.definirValores(pos.linha + 1, pos.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); } //ACIMA pos.definirValores(pos.linha - 1, pos.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--; } //NO pos.definirValores(pos.linha - 1, pos.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(pos.linha - 1, pos.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(pos.linha + 1, pos.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(pos.linha + 1, pos.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; } //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; } //#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(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); //acima pos.definirValores(Posicao.Linha - 1, Posicao.Coluna - 2); if (Tab.posicaoValida(pos) && podeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //ne pos.definirValores(Posicao.Linha - 2, Posicao.Coluna - 1); if (Tab.posicaoValida(pos) && podeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //direita pos.definirValores(Posicao.Linha - 2, Posicao.Coluna + 1); if (Tab.posicaoValida(pos) && podeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //se pos.definirValores(Posicao.Linha - 1, Posicao.Coluna + 2); if (Tab.posicaoValida(pos) && podeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //baixo pos.definirValores(Posicao.Linha + 1, Posicao.Coluna); if (Tab.posicaoValida(pos) && podeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //sw pos.definirValores(Posicao.Linha + 1, Posicao.Coluna + 2); if (Tab.posicaoValida(pos) && podeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //esquerda pos.definirValores(Posicao.Linha + 2, Posicao.Coluna + 1); if (Tab.posicaoValida(pos) && podeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } //nw 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[,] movimentosPossiveis() { bool[,] matriz = 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)) { matriz[pos.Linha, pos.Coluna] = true; } // Nordeste pos.definirValores(Posicao.Linha - 1, Posicao.Coluna + 1); if (Tab.posicaoValida(pos) && podeMover(pos)) { matriz[pos.Linha, pos.Coluna] = true; } // Direita pos.definirValores(Posicao.Linha, Posicao.Coluna + 1); if (Tab.posicaoValida(pos) && podeMover(pos)) { matriz[pos.Linha, pos.Coluna] = true; } // Sudeste pos.definirValores(Posicao.Linha + 1, Posicao.Coluna + 1); if (Tab.posicaoValida(pos) && podeMover(pos)) { matriz[pos.Linha, pos.Coluna] = true; } // Abaixo pos.definirValores(Posicao.Linha + 1, Posicao.Coluna); if (Tab.posicaoValida(pos) && podeMover(pos)) { matriz[pos.Linha, pos.Coluna] = true; } // Sudoeste pos.definirValores(Posicao.Linha + 1, Posicao.Coluna - 1); if (Tab.posicaoValida(pos) && podeMover(pos)) { matriz[pos.Linha, pos.Coluna] = true; } // Esquerda pos.definirValores(Posicao.Linha, Posicao.Coluna - 1); if (Tab.posicaoValida(pos) && podeMover(pos)) { matriz[pos.Linha, pos.Coluna] = true; } // Noroeste pos.definirValores(Posicao.Linha - 1, Posicao.Coluna - 1); if (Tab.posicaoValida(pos) && podeMover(pos)) { matriz[pos.Linha, pos.Coluna] = true; } // #JogadaEspecial Roque if (QteMovimentos == 0 && !Partida.Xeque) { // #JogadaEspecial 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 (Tab.peca(p1) == null && Tab.peca(p2) == null) { matriz[Posicao.Linha, Posicao.Coluna + 2] = true; } } // #JogadaEspecial 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 (Tab.peca(p1) == null && Tab.peca(p2) == null && Tab.peca(p3) == null) { matriz[Posicao.Linha, Posicao.Coluna - 2] = 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.linhas - 1, posicao.colunas); if (tab.posicaoValida(pos) && podeMover(pos)) { mat[pos.linhas, pos.colunas] = true; } // ne pos.definirValores(posicao.linhas - 1, posicao.colunas + 1); if (tab.posicaoValida(pos) && podeMover(pos)) { mat[pos.linhas, pos.colunas] = true; } // direita pos.definirValores(posicao.linhas, posicao.colunas + 1); if (tab.posicaoValida(pos) && podeMover(pos)) { mat[pos.linhas, pos.colunas] = true; } // se pos.definirValores(posicao.linhas + 1, posicao.colunas + 1); if (tab.posicaoValida(pos) && podeMover(pos)) { mat[pos.linhas, pos.colunas] = true; } // abaixo pos.definirValores(posicao.linhas + 1, posicao.colunas); if (tab.posicaoValida(pos) && podeMover(pos)) { mat[pos.linhas, pos.colunas] = true; } // so pos.definirValores(posicao.linhas + 1, posicao.colunas - 1); if (tab.posicaoValida(pos) && podeMover(pos)) { mat[pos.linhas, pos.colunas] = true; } // esquerda pos.definirValores(posicao.linhas, posicao.colunas - 1); if (tab.posicaoValida(pos) && podeMover(pos)) { mat[pos.linhas, pos.colunas] = true; } // no pos.definirValores(posicao.linhas - 1, posicao.colunas - 1); if (tab.posicaoValida(pos) && podeMover(pos)) { mat[pos.linhas, pos.colunas] = true; } // #jogadaespecial roque if (qteMovimentos == 0 && !partida.xeque) { // #jogadaespecial roque pequeno Posicao posT1 = new Posicao(posicao.linhas, posicao.colunas + 3); if (testeTorreParaRoque(posT1)) { Posicao p1 = new Posicao(posicao.linhas, posicao.colunas + 1); Posicao p2 = new Posicao(posicao.linhas, posicao.colunas + 2); if (tab.peca(p1) == null && tab.peca(p2) == null) { mat[posicao.linhas, posicao.colunas + 2] = true; } } // #jogadaespecial roque grande Posicao posT2 = new Posicao(posicao.linhas, posicao.colunas - 4); if (testeTorreParaRoque(posT2)) { Posicao p1 = new Posicao(posicao.linhas, posicao.colunas - 1); Posicao p2 = new Posicao(posicao.linhas, posicao.colunas - 2); Posicao p3 = new Posicao(posicao.linhas, posicao.colunas - 3); if (tab.peca(p1) == null && tab.peca(p2) == null && tab.peca(p3) == null) { mat[posicao.linhas, posicao.colunas - 2] = true; } } } 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); Posicao p2 = new Posicao(Posicao.Linha - 1, Posicao.Coluna); if (Tab.PosicaoValida(p2) && Livre(p2) && Tab.PosicaoValida(pos) && Livre(pos) && QtdMovimentos == 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; } // #Jogada Especial En Passant if (Posicao.Linha == 3) { Posicao esq = new Posicao(Posicao.Linha, Posicao.Coluna - 1); if (Tab.PosicaoValida(esq) && ExisteInimigo(esq) && Tab.Peca(esq) == Partida.VulneravelEnPassant) { mat[esq.Linha - 1, esq.Coluna] = true; } Posicao dir = new Posicao(Posicao.Linha, Posicao.Coluna + 1); if (Tab.PosicaoValida(dir) && ExisteInimigo(dir) && Tab.Peca(dir) == Partida.VulneravelEnPassant) { mat[dir.Linha - 1, dir.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); Posicao p2 = new Posicao(Posicao.Linha + 1, Posicao.Coluna); if (Tab.PosicaoValida(p2) && Livre(p2) && Tab.PosicaoValida(pos) && Livre(pos) && QtdMovimentos == 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; } // #Jogada Especial En Passant if (Posicao.Linha == 4) { Posicao esq = new Posicao(Posicao.Linha, Posicao.Coluna - 1); if (Tab.PosicaoValida(esq) && ExisteInimigo(esq) && Tab.Peca(esq) == Partida.VulneravelEnPassant) { mat[esq.Linha + 1, esq.Coluna] = true; } Posicao dir = new Posicao(Posicao.Linha, Posicao.Coluna + 1); if (Tab.PosicaoValida(dir) && ExisteInimigo(dir) && Tab.Peca(dir) == Partida.VulneravelEnPassant) { mat[dir.Linha + 1, dir.Coluna] = true; } } } return(mat); }
public override bool[,] movimentosPossiveis() { bool[,] matriz = new bool[Tab.Linhas, Tab.Colunas]; Posicao pos = new Posicao(0, 0); // Acima pos.definirValores(Posicao.Linha - 1, Posicao.Coluna); while (Tab.posicaoValida(pos) && podeMover(pos)) { matriz[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)) { matriz[pos.Linha, pos.Coluna] = true; if (Tab.peca(pos) != null && Tab.peca(pos).Cor != Cor) { break; } pos.Coluna = pos.Coluna + 1; } // Abaixo pos.definirValores(Posicao.Linha + 1, Posicao.Coluna); while (Tab.posicaoValida(pos) && podeMover(pos)) { matriz[pos.Linha, pos.Coluna] = true; if (Tab.peca(pos) != null && Tab.peca(pos).Cor != Cor) { break; } pos.Linha = pos.Linha + 1; } // Esquerda pos.definirValores(Posicao.Linha, Posicao.Coluna - 1); while (Tab.posicaoValida(pos) && podeMover(pos)) { matriz[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)) { matriz[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)) { matriz[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)) { matriz[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)) { matriz[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(matriz); }
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; } //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.linha = pos.linha - 1; pos.coluna = 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.coluna = 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.linha = pos.linha + 1; pos.coluna = pos.coluna + 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; } //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.linha = pos.linha + 1; 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.linha = pos.linha - 1; pos.coluna = pos.coluna - 1; } 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); 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; } //leste 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; } //sul 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; } //oeste 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; } //#jogadaEspecial rosque if (qteMovimentos == 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; } } 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); }