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); while (Tabuleiro.PosicaoValida(tempPosicao) && VerificarMovimento(tempPosicao)) { tempMatriz[tempPosicao.Linha, tempPosicao.Coluna] = true; if (Tabuleiro.Peca(tempPosicao) != null && Tabuleiro.Peca(tempPosicao).Cor != Cor) { break; } tempPosicao.Linha -= 1; } // abaixo tempPosicao.AlterarPosicao(Posicao.Linha + 1, Posicao.Coluna); while (Tabuleiro.PosicaoValida(tempPosicao) && VerificarMovimento(tempPosicao)) { tempMatriz[tempPosicao.Linha, tempPosicao.Coluna] = true; if (Tabuleiro.Peca(tempPosicao) != null && Tabuleiro.Peca(tempPosicao).Cor != Cor) { break; } tempPosicao.Linha += 1; } // direita tempPosicao.AlterarPosicao(Posicao.Linha, 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.Coluna += 1; } // esquerda tempPosicao.AlterarPosicao(Posicao.Linha, 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.Coluna -= 1; } return(tempMatriz); }
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[,] 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[,] 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); }