/// <summary> /// Retorna os movimentos que o rei pode realizar no contexto atual /// </summary> /// <returns></returns> public override bool[,] GetMovimentosPossiveis() { bool[,] matriz = new bool[Tabuleiro.Linhas, Tabuleiro.Colunas]; // O rei pode avançar apenas uma casa em qualquer direção, portanto existem oito possíveis posições List <Posicao> posicoes = new List <Posicao>() { new Posicao(Posicao.Linha - 1, Posicao.Coluna), // Norte new Posicao(Posicao.Linha - 1, Posicao.Coluna + 1), // Nordeste new Posicao(Posicao.Linha, Posicao.Coluna + 1), // Leste new Posicao(Posicao.Linha + 1, Posicao.Coluna + 1), // Sudeste new Posicao(Posicao.Linha + 1, Posicao.Coluna), // Sul new Posicao(Posicao.Linha + 1, Posicao.Coluna - 1), // Sudoeste new Posicao(Posicao.Linha, Posicao.Coluna - 1), // Oeste new Posicao(Posicao.Linha - 1, Posicao.Coluna - 1), // Noroeste }; foreach (var posicao in posicoes) { 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 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; } //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; } //baixo 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; } //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; } return(matriz); }
public override bool[,] MovimentosPossiveis() { bool[,] mat = new bool[Tabuleiro.Linhas, Tabuleiro.Colunas]; Posicao pos = new Posicao(0, 0); //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); } //SW 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[Tabuleiro.Linhas, Tabuleiro.Colunas]; Posicao pos = new Posicao(0, 0); pos.DefinirValores(Posicao.Linha - 1, Posicao.Coluna - 2); if (Tabuleiro.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } pos.DefinirValores(Posicao.Linha - 2, Posicao.Coluna - 1); if (Tabuleiro.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } pos.DefinirValores(Posicao.Linha - 2, Posicao.Coluna + 1); if (Tabuleiro.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } pos.DefinirValores(Posicao.Linha - 1, Posicao.Coluna + 2); if (Tabuleiro.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } pos.DefinirValores(Posicao.Linha + 1, Posicao.Coluna + 2); if (Tabuleiro.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } pos.DefinirValores(Posicao.Linha + 2, Posicao.Coluna + 1); if (Tabuleiro.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } pos.DefinirValores(Posicao.Linha + 2, Posicao.Coluna - 1); if (Tabuleiro.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } pos.DefinirValores(Posicao.Linha + 1, Posicao.Coluna - 2); if (Tabuleiro.PosicaoValida(pos) && PodeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; } return(mat); }
public override bool[,] MovimentosPossiveis() { bool[,] tempMatriz = new bool[Tabuleiro.Linhas, Tabuleiro.Colunas]; Posicao tempPosicao = new Posicao(0, 0); tempPosicao.AlterarPosicao(Posicao.Linha - 1, Posicao.Coluna - 2); if (Tabuleiro.PosicaoValida(tempPosicao) && VerificarMovimento(tempPosicao)) { tempMatriz[tempPosicao.Linha, tempPosicao.Coluna] = true; } tempPosicao.AlterarPosicao(Posicao.Linha - 2, Posicao.Coluna - 1); if (Tabuleiro.PosicaoValida(tempPosicao) && VerificarMovimento(tempPosicao)) { tempMatriz[tempPosicao.Linha, tempPosicao.Coluna] = true; } tempPosicao.AlterarPosicao(Posicao.Linha - 2, Posicao.Coluna + 1); if (Tabuleiro.PosicaoValida(tempPosicao) && VerificarMovimento(tempPosicao)) { tempMatriz[tempPosicao.Linha, tempPosicao.Coluna] = true; } tempPosicao.AlterarPosicao(Posicao.Linha - 1, Posicao.Coluna + 2); if (Tabuleiro.PosicaoValida(tempPosicao) && VerificarMovimento(tempPosicao)) { tempMatriz[tempPosicao.Linha, tempPosicao.Coluna] = true; } tempPosicao.AlterarPosicao(Posicao.Linha + 1, Posicao.Coluna + 2); if (Tabuleiro.PosicaoValida(tempPosicao) && VerificarMovimento(tempPosicao)) { tempMatriz[tempPosicao.Linha, tempPosicao.Coluna] = true; } tempPosicao.AlterarPosicao(Posicao.Linha + 2, Posicao.Coluna + 1); if (Tabuleiro.PosicaoValida(tempPosicao) && VerificarMovimento(tempPosicao)) { tempMatriz[tempPosicao.Linha, tempPosicao.Coluna] = true; } tempPosicao.AlterarPosicao(Posicao.Linha + 2, Posicao.Coluna - 1); if (Tabuleiro.PosicaoValida(tempPosicao) && VerificarMovimento(tempPosicao)) { tempMatriz[tempPosicao.Linha, tempPosicao.Coluna] = true; } tempPosicao.AlterarPosicao(Posicao.Linha + 1, Posicao.Coluna - 2); if (Tabuleiro.PosicaoValida(tempPosicao) && VerificarMovimento(tempPosicao)) { tempMatriz[tempPosicao.Linha, tempPosicao.Coluna] = true; } return(tempMatriz); }
public override bool[,] MovimentosPossiveis() { 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; } //diagonal direita acima 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; } //diagonal direita abaixo 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; } //diagonal esquerda abaixo 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; } //diagonal esquerda acima posicao.DefinirValores(posicao.Linha - 1, posicao.Coluna - 1); if (Tabuleiro.PosicaoValida(posicao) && PodeMover(posicao)) { matriz[posicao.Linha, posicao.Coluna] = true; } return(matriz); }
public override bool[,] MovimentosPossiveis() { bool[,] tempMatriz = new bool[Tabuleiro.Linhas, Tabuleiro.Colunas]; Posicao tempPosicao = new Posicao(0, 0); // NO tempPosicao.AlterarPosicao(Posicao.Linha - 1, Posicao.Coluna - 1); while (Tabuleiro.PosicaoValida(tempPosicao) && VerificarMovimento(tempPosicao)) { tempMatriz[tempPosicao.Linha, tempPosicao.Coluna] = true; if (Tabuleiro.Peca(tempPosicao) != null && Tabuleiro.Peca(tempPosicao).Cor != Cor) { break; } tempPosicao.AlterarPosicao(tempPosicao.Linha - 1, tempPosicao.Coluna - 1); } // NE tempPosicao.AlterarPosicao(Posicao.Linha - 1, Posicao.Coluna + 1); while (Tabuleiro.PosicaoValida(tempPosicao) && VerificarMovimento(tempPosicao)) { tempMatriz[tempPosicao.Linha, tempPosicao.Coluna] = true; if (Tabuleiro.Peca(tempPosicao) != null && Tabuleiro.Peca(tempPosicao).Cor != Cor) { break; } tempPosicao.AlterarPosicao(tempPosicao.Linha - 1, tempPosicao.Coluna + 1); } // SE tempPosicao.AlterarPosicao(Posicao.Linha + 1, Posicao.Coluna + 1); while (Tabuleiro.PosicaoValida(tempPosicao) && VerificarMovimento(tempPosicao)) { tempMatriz[tempPosicao.Linha, tempPosicao.Coluna] = true; if (Tabuleiro.Peca(tempPosicao) != null && Tabuleiro.Peca(tempPosicao).Cor != Cor) { break; } tempPosicao.AlterarPosicao(tempPosicao.Linha + 1, tempPosicao.Coluna + 1); } // SO tempPosicao.AlterarPosicao(Posicao.Linha + 1, Posicao.Coluna - 1); while (Tabuleiro.PosicaoValida(tempPosicao) && VerificarMovimento(tempPosicao)) { tempMatriz[tempPosicao.Linha, tempPosicao.Coluna] = true; if (Tabuleiro.Peca(tempPosicao) != null && Tabuleiro.Peca(tempPosicao).Cor != Cor) { break; } tempPosicao.AlterarPosicao(tempPosicao.Linha + 1, tempPosicao.Coluna - 1); } return(tempMatriz); }
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); }
/// <summary> /// Retorna os movimentos que a torre pode realizar no contexto atual /// </summary> /// <returns></returns> public override bool[,] GetMovimentosPossiveis() { bool[,] matriz = new bool[Tabuleiro.Linhas, Tabuleiro.Colunas]; // A torre pode avançar para as direções norte, leste, sul e oeste, // então defino pontos de início para cada uma dessas direções. List <Posicao> posicoes = new List <Posicao>() { new Posicao(Posicao.Linha - 1, Posicao.Coluna), // 0 => Norte new Posicao(Posicao.Linha, Posicao.Coluna + 1), // 1 => Leste new Posicao(Posicao.Linha + 1, Posicao.Coluna), // 2 => Sul new Posicao(Posicao.Linha, Posicao.Coluna - 1), // 3 => Oeste }; // Avança em cada direção até não ser mais possível foreach (var posicao in posicoes) { while (Tabuleiro.PosicaoValida(posicao) && PodeMover(posicao)) { matriz[posicao.Linha, posicao.Coluna] = true; // Caso a torre encontre uma peça adversária if (Tabuleiro.GetPeca(posicao) != null && Tabuleiro.GetPeca(posicao).Cor != Cor) { break; } switch (posicoes.IndexOf(posicao)) { case 0: posicao.Linha--; break; case 1: posicao.Coluna++; break; case 2: posicao.Linha++; break; case 3: posicao.Coluna--; break; default: break; } } } 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[,] MovimentosPosiveis() { bool[,] matriz = new bool[Tabuleiro.Linhas, Tabuleiro.Colunas]; Posicao posicao = new Posicao(0, 0); //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[,] 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 void ValidarOrigem(Posicao origem) { //Metodo retorna falso quando origem não valida no tabuleiro if (!Tabuleiro.PosicaoValida(origem)) { throw new TabuleiroException("Posição de origem nao valida no tabuleiro!"); } if (Tabuleiro.Peca(origem) == null) { throw new TabuleiroException("Não existe peça na posição de origem escolhida!"); } if (JogadorAtual != Tabuleiro.Peca(origem).Cor) { throw new TabuleiroException("A peça de origem escolhida não é sua!"); } if (!Tabuleiro.Peca(origem).ExisteMovimentosPossiveis()) { throw new TabuleiroException("Não há movimentos possiveis para a peça de origem escolhida!"); } }
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[,] tempMatriz = new bool[Tabuleiro.Linhas, Tabuleiro.Colunas]; Posicao tempPosicao = new Posicao(0, 0); // acima tempPosicao.AlterarPosicao(Posicao.Linha - 1, Posicao.Coluna); if (Tabuleiro.PosicaoValida(tempPosicao) && VerificarMovimento(tempPosicao)) { tempMatriz[tempPosicao.Linha, tempPosicao.Coluna] = true; } // ne tempPosicao.AlterarPosicao(Posicao.Linha - 1, Posicao.Coluna + 1); if (Tabuleiro.PosicaoValida(tempPosicao) && VerificarMovimento(tempPosicao)) { tempMatriz[tempPosicao.Linha, tempPosicao.Coluna] = true; } // direita tempPosicao.AlterarPosicao(Posicao.Linha, Posicao.Coluna + 1); if (Tabuleiro.PosicaoValida(tempPosicao) && VerificarMovimento(tempPosicao)) { tempMatriz[tempPosicao.Linha, tempPosicao.Coluna] = true; } // se tempPosicao.AlterarPosicao(Posicao.Linha + 1, Posicao.Coluna + 1); if (Tabuleiro.PosicaoValida(tempPosicao) && VerificarMovimento(tempPosicao)) { tempMatriz[tempPosicao.Linha, tempPosicao.Coluna] = true; } // abaixo tempPosicao.AlterarPosicao(Posicao.Linha + 1, Posicao.Coluna); if (Tabuleiro.PosicaoValida(tempPosicao) && VerificarMovimento(tempPosicao)) { tempMatriz[tempPosicao.Linha, tempPosicao.Coluna] = true; } // so tempPosicao.AlterarPosicao(Posicao.Linha + 1, Posicao.Coluna - 1); if (Tabuleiro.PosicaoValida(tempPosicao) && VerificarMovimento(tempPosicao)) { tempMatriz[tempPosicao.Linha, tempPosicao.Coluna] = true; } // esquerda tempPosicao.AlterarPosicao(Posicao.Linha, Posicao.Coluna - 1); if (Tabuleiro.PosicaoValida(tempPosicao) && VerificarMovimento(tempPosicao)) { tempMatriz[tempPosicao.Linha, tempPosicao.Coluna] = true; } // no tempPosicao.AlterarPosicao(Posicao.Linha - 1, Posicao.Coluna - 1); if (Tabuleiro.PosicaoValida(Posicao) && VerificarMovimento(Posicao)) { tempMatriz[tempPosicao.Linha, tempPosicao.Coluna] = true; } // roque if (Movimentos == 0 && !Partida.Xeque) { // roque pequeno Posicao pt1 = new Posicao(Posicao.Linha, Posicao.Coluna + 3); if (TestarTorreRoque(pt1)) { 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) { tempMatriz[Posicao.Linha, Posicao.Coluna + 2] = true; } } // roque grande Posicao pt2 = new Posicao(Posicao.Linha, Posicao.Coluna - 4); if (TestarTorreRoque(pt2)) { 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) { tempMatriz[Posicao.Linha, Posicao.Coluna - 2] = true; } } } return(tempMatriz); }
public override bool[,] MovimentosPosiveis() { bool[,] matriz = new bool[Tabuleiro.Linhas, Tabuleiro.Colunas]; Posicao Posicao = new Posicao(0, 0); // posição norte Posicao.DefinirValores(Posicao.Linha - 1, Posicao.Coluna); if (Tabuleiro.PosicaoValida(Posicao) && PodeMover(Posicao)) { matriz[Posicao.Linha, Posicao.Coluna] = true; } // posição nordeste Posicao.DefinirValores(Posicao.Linha - 1, Posicao.Coluna + 1); if (Tabuleiro.PosicaoValida(Posicao) && PodeMover(Posicao)) { matriz[Posicao.Linha, Posicao.Coluna] = true; } // posição leste Posicao.DefinirValores(Posicao.Linha, Posicao.Coluna + 1); if (Tabuleiro.PosicaoValida(Posicao) && PodeMover(Posicao)) { matriz[Posicao.Linha, Posicao.Coluna] = true; } // posição sudeste Posicao.DefinirValores(Posicao.Linha + 1, Posicao.Coluna + 1); if (Tabuleiro.PosicaoValida(Posicao) && PodeMover(Posicao)) { matriz[Posicao.Linha, Posicao.Coluna] = true; } // posição sul Posicao.DefinirValores(Posicao.Linha + 1, Posicao.Coluna); if (Tabuleiro.PosicaoValida(Posicao) && PodeMover(Posicao)) { matriz[Posicao.Linha, Posicao.Coluna] = true; } // posição sudoeste Posicao.DefinirValores(Posicao.Linha + 1, Posicao.Coluna - 1); if (Tabuleiro.PosicaoValida(Posicao) && PodeMover(Posicao)) { matriz[Posicao.Linha, Posicao.Coluna] = true; } // posição oeste Posicao.DefinirValores(Posicao.Linha, Posicao.Coluna - 1); if (Tabuleiro.PosicaoValida(Posicao) && PodeMover(Posicao)) { matriz[Posicao.Linha, Posicao.Coluna] = true; } // posição noroeste Posicao.DefinirValores(Posicao.Linha - 1, Posicao.Coluna - 1); if (Tabuleiro.PosicaoValida(Posicao) && PodeMover(Posicao)) { matriz[Posicao.Linha, Posicao.Coluna] = true; } return(matriz); }
public override bool[,] MovimentosPossiveis() { bool[,] mat = new bool[Tabuleiro.Linhas, Tabuleiro.Colunas]; Posicao pos = new Posicao(0, 0); //Cima pos.DefinirValores(Posicao.Linha - 1, Posicao.Coluna - 1); 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; } //baixo 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; } //Roque; if (QtdeMovimentos == 0 && !Partida.PartidaEmXeque) { //Roque pequeno; Posicao posT1 = new Posicao(Posicao.Linha, Posicao.Coluna + 3); if (TestarTorreParaRoque(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 (TestarTorreParaRoque(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); //Cima 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.Linha = pos.Linha - 1; } //Baixo 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.Linha = pos.Linha + 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.Coluna = pos.Coluna + 1; } //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.Coluna = pos.Coluna - 1; } //noroeste 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); } //nordeste 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); } //sudeste 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); } //sudoeste 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[,] 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[,] MovimentosPosiveis() { bool[,] matriz = new bool[Tabuleiro.Linhas, Tabuleiro.Colunas]; Posicao Posicao = new Posicao(0, 0); // posição norte 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; } // posição leste 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; } // posição sul 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; } // posição oeste 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.Coluna = Posicao.Coluna - 1; } return(matriz); }
public override bool[,] MovimentosPossiveis() { bool[,] mat = new bool[Tabuleiro.Linhas, Tabuleiro.Colunas]; Posicao pos = new Posicao(0, 0); //Norte 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; } //Leste 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; } //Sul 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; } //Oeste 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; } return(mat); }
public override bool[,] MovimentosPossiveis() { bool[,] mat = new bool[Tabuleiro.Linhas, Tabuleiro.Colunas]; Posicao newPosicao = new Posicao(0, 0); //TODO: validar nome da // acima newPosicao.DefinirValores(Posicao.Linha - 1, Posicao.Coluna); while (Tabuleiro.PosicaoValida(newPosicao) && PodeMover(newPosicao)) { mat[newPosicao.Linha, newPosicao.Coluna] = true; if (Tabuleiro.Peca(newPosicao) != null && Tabuleiro.Peca(newPosicao).Cor != Cor) { break; } newPosicao.Linha -= 1; } // abaixo newPosicao.DefinirValores(Posicao.Linha + 1, Posicao.Coluna); while (Tabuleiro.PosicaoValida(newPosicao) && PodeMover(newPosicao)) { mat[newPosicao.Linha, newPosicao.Coluna] = true; if (Tabuleiro.Peca(newPosicao) != null && Tabuleiro.Peca(newPosicao).Cor != Cor) { break; } newPosicao.Linha += 1; } // direita newPosicao.DefinirValores(Posicao.Linha, Posicao.Coluna + 1); while (Tabuleiro.PosicaoValida(newPosicao) && PodeMover(newPosicao)) { mat[newPosicao.Linha, newPosicao.Coluna] = true; if (Tabuleiro.Peca(newPosicao) != null && Tabuleiro.Peca(newPosicao).Cor != Cor) { break; } newPosicao.Coluna += 1; } // esquerda newPosicao.DefinirValores(Posicao.Linha, Posicao.Coluna - 1); while (Tabuleiro.PosicaoValida(newPosicao) && PodeMover(newPosicao)) { mat[newPosicao.Linha, newPosicao.Coluna] = true; if (Tabuleiro.Peca(newPosicao) != null && Tabuleiro.Peca(newPosicao).Cor != Cor) { break; } newPosicao.Coluna -= 1; } return(mat); }
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[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; } //ne 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; } //se 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; } //so 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; } //no 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 posicaoTorreH = new Posicao(Posicao.Linha, Posicao.Coluna + 3); if (TestaATorreParaORoque(posicaoTorreH)) { 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)) { matriz[Posicao.Linha, Posicao.Coluna + 2] = true; } } //Roque Grande Posicao posicaoTorreA = new Posicao(Posicao.Linha, Posicao.Coluna - 4); if (TestaATorreParaORoque(posicaoTorreA)) { 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[,] 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[,] matriz = new bool[Tabuleiro.Linhas, Tabuleiro.Colunas]; Posicao pos = new Posicao(0, 0); /* * (N) * nw | ne * (W)---|---(E) * sw | se * (S) */ //posicao N pos.DefinirValores(Posicao.Linha - 1, Posicao.Coluna); while (Tabuleiro.PosicaoValida(pos) && PodeMover(pos)) { matriz[pos.Linha, pos.Coluna] = true; if (Tabuleiro.GetPeca(pos) != null && Tabuleiro.GetPeca(pos).Cor != Cor) { break; } pos.Linha = pos.Linha - 1; } //posicao S pos.DefinirValores(Posicao.Linha + 1, Posicao.Coluna); while (Tabuleiro.PosicaoValida(pos) && PodeMover(pos)) { matriz[pos.Linha, pos.Coluna] = true; if (Tabuleiro.GetPeca(pos) != null && Tabuleiro.GetPeca(pos).Cor != Cor) { break; } pos.Linha = pos.Linha + 1; } //posicao E pos.DefinirValores(Posicao.Linha, Posicao.Coluna + 1); while (Tabuleiro.PosicaoValida(pos) && PodeMover(pos)) { matriz[pos.Linha, pos.Coluna] = true; if (Tabuleiro.GetPeca(pos) != null && Tabuleiro.GetPeca(pos).Cor != Cor) { break; } pos.Coluna = pos.Coluna + 1; } //posicao W pos.DefinirValores(Posicao.Linha, Posicao.Coluna - 1); while (Tabuleiro.PosicaoValida(pos) && PodeMover(pos)) { matriz[pos.Linha, pos.Coluna] = true; if (Tabuleiro.GetPeca(pos) != null && Tabuleiro.GetPeca(pos).Cor != Cor) { break; } pos.Coluna = pos.Coluna - 1; } return(matriz); }
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[,] tempMatriz = new bool[Tabuleiro.Linhas, Tabuleiro.Colunas]; Posicao tempPosicao = new Posicao(0, 0); if (Cor == Cor.Branca) { tempPosicao.AlterarPosicao(Posicao.Linha - 1, Posicao.Coluna); if (Tabuleiro.PosicaoValida(tempPosicao) && VerificaEspacoVazio(tempPosicao)) { tempMatriz[tempPosicao.Linha, tempPosicao.Coluna] = true; } tempPosicao.AlterarPosicao(Posicao.Linha - 2, Posicao.Coluna); if (Tabuleiro.PosicaoValida(tempPosicao) && VerificaEspacoVazio(tempPosicao) && Movimentos == 0) { tempMatriz[tempPosicao.Linha, tempPosicao.Coluna] = true; } tempPosicao.AlterarPosicao(Posicao.Linha - 1, Posicao.Coluna - 1); if (Tabuleiro.PosicaoValida(tempPosicao) && VerificaInimigo(tempPosicao)) { tempMatriz[tempPosicao.Linha, tempPosicao.Coluna] = true; } tempPosicao.AlterarPosicao(Posicao.Linha - 1, Posicao.Coluna + 1); if (Tabuleiro.PosicaoValida(tempPosicao) && VerificaInimigo(tempPosicao)) { tempMatriz[tempPosicao.Linha, tempPosicao.Coluna] = true; } // en passant if (Posicao.Linha == 3) { Posicao esquerda = new Posicao(Posicao.Linha, Posicao.Coluna - 1); if (Tabuleiro.PosicaoValida(esquerda) && VerificaInimigo(esquerda) && Tabuleiro.Peca(esquerda) == Partida.PecaEnPassant) { tempMatriz[esquerda.Linha - 1, esquerda.Coluna] = true; } Posicao direita = new Posicao(Posicao.Linha, Posicao.Coluna + 1); if (Tabuleiro.PosicaoValida(direita) && VerificaInimigo(direita) && Tabuleiro.Peca(direita) == Partida.PecaEnPassant) { tempMatriz[direita.Linha - 1, direita.Coluna] = true; } } } else { tempPosicao.AlterarPosicao(Posicao.Linha + 1, Posicao.Coluna); if (Tabuleiro.PosicaoValida(tempPosicao) && VerificaEspacoVazio(tempPosicao)) { tempMatriz[tempPosicao.Linha, tempPosicao.Coluna] = true; } tempPosicao.AlterarPosicao(Posicao.Linha + 2, Posicao.Coluna); if (Tabuleiro.PosicaoValida(tempPosicao) && VerificaEspacoVazio(tempPosicao) && Movimentos == 0) { tempMatriz[tempPosicao.Linha, tempPosicao.Coluna] = true; } tempPosicao.AlterarPosicao(Posicao.Linha + 1, Posicao.Coluna - 1); if (Tabuleiro.PosicaoValida(tempPosicao) && VerificaInimigo(tempPosicao)) { tempMatriz[tempPosicao.Linha, tempPosicao.Coluna] = true; } tempPosicao.AlterarPosicao(Posicao.Linha + 1, Posicao.Coluna + 1); if (Tabuleiro.PosicaoValida(tempPosicao) && VerificaInimigo(tempPosicao)) { tempMatriz[tempPosicao.Linha, tempPosicao.Coluna] = true; } // en passant if (Posicao.Linha == 4) { Posicao esquerda = new Posicao(Posicao.Linha, Posicao.Coluna - 1); if (Tabuleiro.PosicaoValida(esquerda) && VerificaInimigo(esquerda) && Tabuleiro.Peca(esquerda) == Partida.PecaEnPassant) { tempMatriz[esquerda.Linha + 1, esquerda.Coluna] = true; } Posicao direita = new Posicao(Posicao.Linha, Posicao.Coluna + 1); if (Tabuleiro.PosicaoValida(direita) && VerificaInimigo(direita) && Tabuleiro.Peca(direita) == Partida.PecaEnPassant) { tempMatriz[direita.Linha + 1, direita.Coluna] = true; } } } return(tempMatriz); }
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[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; } //Suldeste 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 (QtdMovimentos == 0 && !Partida.Xeque) { //#jogadaespecial roque PEQUENO Posicao posT1 = new Posicao(Posicao.Linha, Posicao.Coluna + 3); if (TesteTorreRoque(posT1)) { Posicao p1 = new Posicao(Posicao.Linha, Posicao.Coluna + 1); Posicao p2 = new Posicao(Posicao.Linha, Posicao.Coluna + 2); if (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 (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); }