public override bool[,] MovimentosPossiveis() { bool[,] matriz = new bool[Tab.Linhas, Tab.Colunas]; Posicao pos = new Posicao(0, 0); // North pos.SetPosicao(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; } // South pos.SetPosicao(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; } // East pos.SetPosicao(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; } // West pos.SetPosicao(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; } return(matriz); }
public override bool[,] MovimentosPossiveis() { bool[,] matriz = new bool[Tabuleiro.Linhas, Tabuleiro.Colunas]; Posicao tempPosicao = new Posicao(Posicao.Linha, Posicao.Coluna); // N tempPosicao.SetPosicao(Posicao.Linha - 1, Posicao.Coluna); while (Tabuleiro.PosicaoValida(tempPosicao) && PodeMover(tempPosicao)) { matriz[tempPosicao.Linha, tempPosicao.Coluna] = true; if (Tabuleiro.GetPeca(tempPosicao) != null && Tabuleiro.GetPeca(tempPosicao).Cor != Cor) { break; } tempPosicao.Linha--; } // S tempPosicao.SetPosicao(Posicao.Linha + 1, Posicao.Coluna); while (Tabuleiro.PosicaoValida(tempPosicao) && PodeMover(tempPosicao)) { matriz[tempPosicao.Linha, tempPosicao.Coluna] = true; if (Tabuleiro.GetPeca(tempPosicao) != null && Tabuleiro.GetPeca(tempPosicao).Cor != Cor) { break; } tempPosicao.Linha++; } //E tempPosicao.SetPosicao(Posicao.Linha, Posicao.Coluna + 1); while (Tabuleiro.PosicaoValida(tempPosicao) && PodeMover(tempPosicao)) { matriz[tempPosicao.Linha, tempPosicao.Coluna] = true; if (Tabuleiro.GetPeca(tempPosicao) != null && Tabuleiro.GetPeca(tempPosicao).Cor != Cor) { break; } tempPosicao.Coluna++; } // W tempPosicao.SetPosicao(Posicao.Linha, Posicao.Coluna - 1); while (Tabuleiro.PosicaoValida(tempPosicao) && PodeMover(tempPosicao)) { matriz[tempPosicao.Linha, tempPosicao.Coluna] = true; if (Tabuleiro.GetPeca(tempPosicao) != null && Tabuleiro.GetPeca(tempPosicao).Cor != Cor) { break; } tempPosicao.Coluna--; } return(matriz); }
public override bool[,] MovimentosPossiveis() { bool[,] matriz = new bool[Tab.Linhas, Tab.Colunas]; Posicao pos = new Posicao(0, 0); // NorthWest pos.SetPosicao(Posicao.Linha - 1, Posicao.Coluna - 2); if (Tab.PosicaoValida(pos) && PodeMover(pos)) { matriz[pos.Linha, pos.Coluna] = true; } // WestNorth pos.SetPosicao(Posicao.Linha - 2, Posicao.Coluna - 1); if (Tab.PosicaoValida(pos) && PodeMover(pos)) { matriz[pos.Linha, pos.Coluna] = true; } // NorthEast pos.SetPosicao(Posicao.Linha - 1, Posicao.Coluna + 2); if (Tab.PosicaoValida(pos) && PodeMover(pos)) { matriz[pos.Linha, pos.Coluna] = true; } // EastNorth pos.SetPosicao(Posicao.Linha - 2, Posicao.Coluna + 1); if (Tab.PosicaoValida(pos) && PodeMover(pos)) { matriz[pos.Linha, pos.Coluna] = true; } // SouthEast pos.SetPosicao(Posicao.Linha + 1, Posicao.Coluna + 2); if (Tab.PosicaoValida(pos) && PodeMover(pos)) { matriz[pos.Linha, pos.Coluna] = true; } // EastSouth pos.SetPosicao(Posicao.Linha + 2, Posicao.Coluna + 1); if (Tab.PosicaoValida(pos) && PodeMover(pos)) { matriz[pos.Linha, pos.Coluna] = true; } // SouthWest pos.SetPosicao(Posicao.Linha + 1, Posicao.Coluna - 2); if (Tab.PosicaoValida(pos) && PodeMover(pos)) { matriz[pos.Linha, pos.Coluna] = true; } // WestSouth pos.SetPosicao(Posicao.Linha + 2, Posicao.Coluna - 1); if (Tab.PosicaoValida(pos) && PodeMover(pos)) { matriz[pos.Linha, pos.Coluna] = true; } return(matriz); }
public override bool[,] MovimentosPossiveis() { bool[,] matriz = new bool[Tabuleiro.Linhas, Tabuleiro.Colunas]; Posicao posicao = new Posicao(0, 0); // NW posicao.SetPosicao(Posicao.Linha - 1, Posicao.Coluna - 1); while (Tabuleiro.PosicaoValida(posicao) && PodeMover(posicao)) { matriz[posicao.Linha, posicao.Coluna] = true; if (Tabuleiro.GetPeca(posicao) != null && Tabuleiro.GetPeca(posicao).Cor != Cor) { break; } posicao.SetPosicao(posicao.Linha - 1, posicao.Coluna - 1); } // NE posicao.SetPosicao(Posicao.Linha - 1, Posicao.Coluna + 1); while (Tabuleiro.PosicaoValida(posicao) && PodeMover(posicao)) { matriz[posicao.Linha, posicao.Coluna] = true; if (Tabuleiro.GetPeca(posicao) != null && Tabuleiro.GetPeca(posicao).Cor != Cor) { break; } posicao.SetPosicao(posicao.Linha - 1, posicao.Coluna + 1); } // SE posicao.SetPosicao(Posicao.Linha + 1, Posicao.Coluna + 1); while (Tabuleiro.PosicaoValida(posicao) && PodeMover(posicao)) { matriz[posicao.Linha, posicao.Coluna] = true; if (Tabuleiro.GetPeca(posicao) != null && Tabuleiro.GetPeca(posicao).Cor != Cor) { break; } posicao.SetPosicao(posicao.Linha + 1, posicao.Coluna + 1); } // SW posicao.SetPosicao(Posicao.Linha + 1, Posicao.Coluna - 1); while (Tabuleiro.PosicaoValida(posicao) && PodeMover(posicao)) { matriz[posicao.Linha, posicao.Coluna] = true; if (Tabuleiro.GetPeca(posicao) != null && Tabuleiro.GetPeca(posicao).Cor != Cor) { break; } posicao.SetPosicao(posicao.Linha + 1, posicao.Coluna - 1); } return(matriz); }
public override bool[,] MovimentosPossiveis() { bool[,] matriz = new bool[Tabuleiro.Linhas, Tabuleiro.Colunas]; Posicao posicao = new Posicao(0, 0); posicao.SetPosicao(Posicao.Linha - 1, Posicao.Coluna - 2); if (Tabuleiro.PosicaoValida(posicao) && PodeMover(posicao)) { matriz[posicao.Linha, posicao.Coluna] = true; } posicao.SetPosicao(Posicao.Linha - 2, Posicao.Coluna - 1); if (Tabuleiro.PosicaoValida(posicao) && PodeMover(posicao)) { matriz[posicao.Linha, posicao.Coluna] = true; } posicao.SetPosicao(Posicao.Linha - 2, Posicao.Coluna + 1); if (Tabuleiro.PosicaoValida(posicao) && PodeMover(posicao)) { matriz[posicao.Linha, posicao.Coluna] = true; } posicao.SetPosicao(Posicao.Linha - 1, Posicao.Coluna + 2); if (Tabuleiro.PosicaoValida(posicao) && PodeMover(posicao)) { matriz[posicao.Linha, posicao.Coluna] = true; } posicao.SetPosicao(Posicao.Linha + 1, Posicao.Coluna + 2); if (Tabuleiro.PosicaoValida(posicao) && PodeMover(posicao)) { matriz[posicao.Linha, posicao.Coluna] = true; } posicao.SetPosicao(Posicao.Linha + 2, Posicao.Coluna + 1); if (Tabuleiro.PosicaoValida(posicao) && PodeMover(posicao)) { matriz[posicao.Linha, posicao.Coluna] = true; } posicao.SetPosicao(Posicao.Linha + 2, Posicao.Coluna - 1); if (Tabuleiro.PosicaoValida(posicao) && PodeMover(posicao)) { matriz[posicao.Linha, posicao.Coluna] = true; } posicao.SetPosicao(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[,] matriz = new bool[Tabuleiro.Linhas, Tabuleiro.Colunas]; Posicao tempPosicao = new Posicao(Posicao.Linha, Posicao.Coluna); // N tempPosicao.SetPosicao(Posicao.Linha - 1, Posicao.Coluna); if (Tabuleiro.PosicaoValida(tempPosicao) && PodeMover(tempPosicao)) { matriz[tempPosicao.Linha, tempPosicao.Coluna] = true; } // NE tempPosicao.SetPosicao(Posicao.Linha - 1, Posicao.Coluna + 1); if (Tabuleiro.PosicaoValida(tempPosicao) && PodeMover(tempPosicao)) { matriz[tempPosicao.Linha, tempPosicao.Coluna] = true; } // E tempPosicao.SetPosicao(Posicao.Linha, Posicao.Coluna + 1); if (Tabuleiro.PosicaoValida(tempPosicao) && PodeMover(tempPosicao)) { matriz[tempPosicao.Linha, tempPosicao.Coluna] = true; } // SE tempPosicao.SetPosicao(Posicao.Linha + 1, Posicao.Coluna + 1); if (Tabuleiro.PosicaoValida(tempPosicao) && PodeMover(tempPosicao)) { matriz[tempPosicao.Linha, tempPosicao.Coluna] = true; } // S tempPosicao.SetPosicao(Posicao.Linha + 1, Posicao.Coluna); if (Tabuleiro.PosicaoValida(tempPosicao) && PodeMover(tempPosicao)) { matriz[tempPosicao.Linha, tempPosicao.Coluna] = true; } // SW tempPosicao.SetPosicao(Posicao.Linha + 1, Posicao.Coluna - 1); if (Tabuleiro.PosicaoValida(tempPosicao) && PodeMover(tempPosicao)) { matriz[tempPosicao.Linha, tempPosicao.Coluna] = true; } // W tempPosicao.SetPosicao(Posicao.Linha, Posicao.Coluna - 1); if (Tabuleiro.PosicaoValida(tempPosicao) && PodeMover(tempPosicao)) { matriz[tempPosicao.Linha, tempPosicao.Coluna] = true; } // NW tempPosicao.SetPosicao(Posicao.Linha - 1, Posicao.Coluna - 1); if (Tabuleiro.PosicaoValida(tempPosicao) && PodeMover(tempPosicao)) { matriz[tempPosicao.Linha, tempPosicao.Coluna] = true; } // #JogadaEspecial Roque if (QtdMovimentos == 0 && !partida.Xeque) { // #JogadaEspecial Roque Pequeno Posicao posTorre1 = new Posicao(Posicao.Linha, Posicao.Coluna + 3); if (TestarRoque(posTorre1)) { Posicao tempPos1 = new Posicao(Posicao.Linha, Posicao.Coluna + 1); Posicao tempPos2 = new Posicao(Posicao.Linha, Posicao.Coluna + 2); if (Tabuleiro.GetPeca(tempPos1) == null && Tabuleiro.GetPeca(tempPos2) == null) { matriz[Posicao.Linha, Posicao.Coluna + 2] = true; } } // #JogadaEspecial Roque Grande Posicao posTorre2 = new Posicao(Posicao.Linha, Posicao.Coluna - 4); if (TestarRoque(posTorre2)) { Posicao tempPos1 = new Posicao(Posicao.Linha, Posicao.Coluna - 1); Posicao tempPos2 = new Posicao(Posicao.Linha, Posicao.Coluna - 2); Posicao tempPos3 = new Posicao(Posicao.Linha, Posicao.Coluna - 3); if (Tabuleiro.GetPeca(tempPos1) == null && Tabuleiro.GetPeca(tempPos2) == null && Tabuleiro.GetPeca(tempPos3) == null) { matriz[Posicao.Linha, Posicao.Coluna - 2] = true; } } } return(matriz); }
public override bool[,] MovimentosPossiveis() { bool[,] matriz = new bool[Tabuleiro.Linhas, Tabuleiro.Colunas]; Posicao tempPos = new Posicao(0, 0); if (Cor == Cor.branca) { tempPos.SetPosicao(Posicao.Linha - 2, Posicao.Coluna); if (Tabuleiro.PosicaoValida(tempPos) && Livre(tempPos) && Livre(new Posicao(tempPos.Linha + 1, tempPos.Coluna)) && QtdMovimentos == 0) { matriz[tempPos.Linha, tempPos.Coluna] = true; } tempPos.SetPosicao(Posicao.Linha - 1, Posicao.Coluna); if (Tabuleiro.PosicaoValida(tempPos) && Livre(tempPos)) { matriz[tempPos.Linha, tempPos.Coluna] = true; } tempPos.SetPosicao(Posicao.Linha - 1, Posicao.Coluna - 1); if (Tabuleiro.PosicaoValida(tempPos) && ExisteInimigo(tempPos)) { matriz[tempPos.Linha, tempPos.Coluna] = true; } tempPos.SetPosicao(Posicao.Linha - 1, Posicao.Coluna + 1); if (Tabuleiro.PosicaoValida(tempPos) && ExisteInimigo(tempPos)) { matriz[tempPos.Linha, tempPos.Coluna] = true; } // #jogadaespecial en passant if (Posicao.Linha == 3) { tempPos.SetPosicao(Posicao.Linha, Posicao.Coluna - 1); if (Tabuleiro.PosicaoValida(tempPos) && ExisteInimigo(tempPos) && Tabuleiro.GetPeca(tempPos) == partida.VulneravelEnPassant) { matriz[tempPos.Linha - 1, tempPos.Coluna] = true; } tempPos.SetPosicao(Posicao.Linha, Posicao.Coluna + 1); if (Tabuleiro.PosicaoValida(tempPos) && ExisteInimigo(tempPos) && Tabuleiro.GetPeca(tempPos) == partida.VulneravelEnPassant) { matriz[tempPos.Linha - 1, tempPos.Coluna] = true; } } } else { tempPos.SetPosicao(Posicao.Linha + 2, Posicao.Coluna); if (Tabuleiro.PosicaoValida(tempPos) && Livre(tempPos) && Livre(new Posicao(tempPos.Linha - 1, tempPos.Coluna)) && QtdMovimentos == 0) { matriz[tempPos.Linha, tempPos.Coluna] = true; } tempPos.SetPosicao(Posicao.Linha + 1, Posicao.Coluna); if (Tabuleiro.PosicaoValida(tempPos) && Livre(tempPos)) { matriz[tempPos.Linha, tempPos.Coluna] = true; } tempPos.SetPosicao(Posicao.Linha + 1, Posicao.Coluna - 1); if (Tabuleiro.PosicaoValida(tempPos) && ExisteInimigo(tempPos)) { matriz[tempPos.Linha, tempPos.Coluna] = true; } tempPos.SetPosicao(Posicao.Linha + 1, Posicao.Coluna + 1); if (Tabuleiro.PosicaoValida(tempPos) && ExisteInimigo(tempPos)) { matriz[tempPos.Linha, tempPos.Coluna] = true; } // #jogadaespecial en passant if (Posicao.Linha == 4) { tempPos.SetPosicao(Posicao.Linha, Posicao.Coluna - 1); if (Tabuleiro.PosicaoValida(tempPos) && ExisteInimigo(tempPos) && Tabuleiro.GetPeca(tempPos) == partida.VulneravelEnPassant) { matriz[tempPos.Linha + 1, tempPos.Coluna] = true; } tempPos.SetPosicao(Posicao.Linha, Posicao.Coluna + 1); if (Tabuleiro.PosicaoValida(tempPos) && ExisteInimigo(tempPos) && Tabuleiro.GetPeca(tempPos) == partida.VulneravelEnPassant) { matriz[tempPos.Linha + 1, tempPos.Coluna] = true; } } } return(matriz); }
public override bool[,] MovimentosPossiveis() { bool[,] matriz = new bool[Tab.Linhas, Tab.Colunas]; Posicao pos = new Posicao(0, 0); if (Cor == Cor.Branca) { pos.SetPosicao(Posicao.Linha - 1, Posicao.Coluna); if (Tab.PosicaoValida(pos) && Livre(pos)) { matriz[pos.Linha, pos.Coluna] = true; } pos.SetPosicao(Posicao.Linha - 2, Posicao.Coluna); if (Tab.PosicaoValida(pos) && Livre(pos) && QntMovimentos == 0) { matriz[pos.Linha, pos.Coluna] = true; } pos.SetPosicao(Posicao.Linha - 1, Posicao.Coluna - 1); if (Tab.PosicaoValida(pos) && ExisteInimigo(pos)) { matriz[pos.Linha, pos.Coluna] = true; } pos.SetPosicao(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.VuneravelEnPassant) { 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.VuneravelEnPassant) { matriz[direita.Linha - 1, direita.Coluna] = true; } } } else { pos.SetPosicao(Posicao.Linha + 1, Posicao.Coluna); if (Tab.PosicaoValida(pos) && Livre(pos)) { matriz[pos.Linha, pos.Coluna] = true; } pos.SetPosicao(Posicao.Linha + 2, Posicao.Coluna); if (Tab.PosicaoValida(pos) && Livre(pos) && QntMovimentos == 0) { matriz[pos.Linha, pos.Coluna] = true; } pos.SetPosicao(Posicao.Linha + 1, Posicao.Coluna + 1); if (Tab.PosicaoValida(pos) && ExisteInimigo(pos)) { matriz[pos.Linha, pos.Coluna] = true; } pos.SetPosicao(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.VuneravelEnPassant) { 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.VuneravelEnPassant) { matriz[direita.Linha + 1, direita.Coluna] = true; } } } return(matriz); }
public override bool[,] MovimentosPossiveis() { bool[,] matriz = new bool[Tab.Linhas, Tab.Colunas]; Posicao pos = new Posicao(0, 0); // North pos.SetPosicao(Posicao.Linha - 1, Posicao.Coluna); if (Tab.PosicaoValida(pos) && PodeMover(pos)) { matriz[pos.Linha, pos.Coluna] = true; } // NorthEast pos.SetPosicao(Posicao.Linha - 1, Posicao.Coluna + 1); if (Tab.PosicaoValida(pos) && PodeMover(pos)) { matriz[pos.Linha, pos.Coluna] = true; } // East pos.SetPosicao(Posicao.Linha, Posicao.Coluna + 1); if (Tab.PosicaoValida(pos) && PodeMover(pos)) { matriz[pos.Linha, pos.Coluna] = true; } // SouthEast pos.SetPosicao(Posicao.Linha + 1, Posicao.Coluna + 1); if (Tab.PosicaoValida(pos) && PodeMover(pos)) { matriz[pos.Linha, pos.Coluna] = true; } // SouthEast pos.SetPosicao(Posicao.Linha + 1, Posicao.Coluna); if (Tab.PosicaoValida(pos) && PodeMover(pos)) { matriz[pos.Linha, pos.Coluna] = true; } // SouthWest pos.SetPosicao(Posicao.Linha + 1, Posicao.Coluna - 1); if (Tab.PosicaoValida(pos) && PodeMover(pos)) { matriz[pos.Linha, pos.Coluna] = true; } // West pos.SetPosicao(Posicao.Linha, Posicao.Coluna - 1); if (Tab.PosicaoValida(pos) && PodeMover(pos)) { matriz[pos.Linha, pos.Coluna] = true; } // West pos.SetPosicao(Posicao.Linha - 1, Posicao.Coluna - 1); if (Tab.PosicaoValida(pos) && PodeMover(pos)) { matriz[pos.Linha, pos.Coluna] = true; } // #JogadasEspeciais if (QntMovimentos == 0 && !Partida.EmXeque) { // #JogadaEspecial Roque pequeno Posicao posT1 = new Posicao(Posicao.Linha, Posicao.Coluna + 3); if (TesteTorreParaRoque(posT1)) { Posicao pos1 = new Posicao(Posicao.Linha, Posicao.Coluna + 1); Posicao pos2 = new Posicao(Posicao.Linha, Posicao.Coluna + 2); if (Tab.Peca(pos1) == null && Tab.Peca(pos2) == null) { matriz[Posicao.Linha, Posicao.Coluna + 2] = true; } } // #JogadaEspecial Roque grande Posicao posT2 = new Posicao(Posicao.Linha, Posicao.Coluna - 4); if (TesteTorreParaRoque(posT2)) { Posicao pos1 = new Posicao(Posicao.Linha, Posicao.Coluna - 1); Posicao pos2 = new Posicao(Posicao.Linha, Posicao.Coluna - 2); Posicao pos3 = new Posicao(Posicao.Linha, Posicao.Coluna - 3); if (Tab.Peca(pos1) == null && Tab.Peca(pos2) == null && Tab.Peca(pos3) == null) { matriz[Posicao.Linha, Posicao.Coluna - 2] = true; } } } return(matriz); }