public override bool[,] MovimentosPossiveis() { bool[,] possibilidades = new bool[Mesa.Linhas, Mesa.Colunas]; Posicao posicao = new Posicao(0, 0); //acima posicao.DefinirPosicaoFutura(Posicao.Linha - 1, Posicao.Coluna); if (Mesa.PosicaoValida(posicao) && PodeMover(posicao)) { possibilidades[posicao.Linha, posicao.Coluna] = true; } //abaixo posicao.DefinirPosicaoFutura(Posicao.Linha + 1, Posicao.Coluna); if (Mesa.PosicaoValida(posicao) && PodeMover(posicao)) { possibilidades[posicao.Linha, posicao.Coluna] = true; } //esquerda posicao.DefinirPosicaoFutura(Posicao.Linha, Posicao.Coluna - 1); if (Mesa.PosicaoValida(posicao) && PodeMover(posicao)) { possibilidades[posicao.Linha, posicao.Coluna] = true; } //direita posicao.DefinirPosicaoFutura(Posicao.Linha, Posicao.Coluna + 1); if (Mesa.PosicaoValida(posicao) && PodeMover(posicao)) { possibilidades[posicao.Linha, posicao.Coluna] = true; } //Noroeste posicao.DefinirPosicaoFutura(Posicao.Linha - 1, Posicao.Coluna - 1); if (Mesa.PosicaoValida(posicao) && PodeMover(posicao)) { possibilidades[posicao.Linha, posicao.Coluna] = true; } //Nordeste posicao.DefinirPosicaoFutura(Posicao.Linha - 1, Posicao.Coluna + 1); if (Mesa.PosicaoValida(posicao) && PodeMover(posicao)) { possibilidades[posicao.Linha, posicao.Coluna] = true; } //Sudoeste posicao.DefinirPosicaoFutura(Posicao.Linha + 1, Posicao.Coluna - 1); if (Mesa.PosicaoValida(posicao) && PodeMover(posicao)) { possibilidades[posicao.Linha, posicao.Coluna] = true; } //Sudeste posicao.DefinirPosicaoFutura(Posicao.Linha + 1, Posicao.Coluna + 1); if (Mesa.PosicaoValida(posicao) && PodeMover(posicao)) { possibilidades[posicao.Linha, posicao.Coluna] = true; } return(possibilidades); }
public override bool[,] MovimentosPossiveis() { bool[,] possibilidades = new bool[Mesa.Linhas, Mesa.Colunas]; Posicao posicao = new Posicao(0, 0); //acima posicao.DefinirPosicaoFutura(Posicao.Linha - 1, Posicao.Coluna); while (Mesa.PosicaoValida(posicao) && PodeMover(posicao)) { possibilidades[posicao.Linha, posicao.Coluna] = true; if (Mesa.PosicaoPeca(posicao) != null && Mesa.PosicaoPeca(posicao).Cor != Cor) { break; } posicao.Linha--; } //abaixo posicao.DefinirPosicaoFutura(Posicao.Linha + 1, Posicao.Coluna); while (Mesa.PosicaoValida(posicao) && PodeMover(posicao)) { possibilidades[posicao.Linha, posicao.Coluna] = true; if (Mesa.PosicaoPeca(posicao) != null && Mesa.PosicaoPeca(posicao).Cor != Cor) { break; } posicao.Linha++; } //direita posicao.DefinirPosicaoFutura(Posicao.Linha, Posicao.Coluna + 1); while (Mesa.PosicaoValida(posicao) && PodeMover(posicao)) { possibilidades[posicao.Linha, posicao.Coluna] = true; if (Mesa.PosicaoPeca(posicao) != null && Mesa.PosicaoPeca(posicao).Cor != Cor) { break; } posicao.Coluna++; } //esquerda posicao.DefinirPosicaoFutura(Posicao.Linha, Posicao.Coluna - 1); while (Mesa.PosicaoValida(posicao) && PodeMover(posicao)) { possibilidades[posicao.Linha, posicao.Coluna] = true; if (Mesa.PosicaoPeca(posicao) != null && Mesa.PosicaoPeca(posicao).Cor != Cor) { break; } posicao.Coluna--; } return(possibilidades); }