public override bool[,] MovimentosPossiveis() { bool[,] movimentos = new bool[Tabuleiro.Linhas, Tabuleiro.Colunas]; Posicao aux = new Posicao(0, 0); aux.DefinirPosicao(Posicao.Linha - 1, Posicao.Coluna); if (Tabuleiro.VerificarPosicao(aux) && PodeMover(aux)) { movimentos[aux.Linha, aux.Coluna] = true; } aux.DefinirPosicao(Posicao.Linha - 1, Posicao.Coluna + 1); if (Tabuleiro.VerificarPosicao(aux) && PodeMover(aux)) { movimentos[aux.Linha, aux.Coluna] = true; } aux.DefinirPosicao(Posicao.Linha, Posicao.Coluna + 1); if (Tabuleiro.VerificarPosicao(aux) && PodeMover(aux)) { movimentos[aux.Linha, aux.Coluna] = true; } aux.DefinirPosicao(Posicao.Linha + 1, Posicao.Coluna + 1); if (Tabuleiro.VerificarPosicao(aux) && PodeMover(aux)) { movimentos[aux.Linha, aux.Coluna] = true; } aux.DefinirPosicao(Posicao.Linha + 1, Posicao.Coluna); if (Tabuleiro.VerificarPosicao(aux) && PodeMover(aux)) { movimentos[aux.Linha, aux.Coluna] = true; } aux.DefinirPosicao(Posicao.Linha + 1, Posicao.Coluna - 1); if (Tabuleiro.VerificarPosicao(aux) && PodeMover(aux)) { movimentos[aux.Linha, aux.Coluna] = true; } aux.DefinirPosicao(Posicao.Linha, Posicao.Coluna - 1); if (Tabuleiro.VerificarPosicao(aux) && PodeMover(aux)) { movimentos[aux.Linha, aux.Coluna] = true; } aux.DefinirPosicao(Posicao.Linha - 1, Posicao.Coluna - 1); if (Tabuleiro.VerificarPosicao(aux) && PodeMover(aux)) { movimentos[aux.Linha, aux.Coluna] = true; } return(movimentos); }
public override bool[,] MovimentosPossiveis() { bool[,] movimentos = new bool[Tabuleiro.Linhas, Tabuleiro.Colunas]; Posicao aux = new Posicao(0, 0); aux.DefinirPosicao(Posicao.Linha - 1, Posicao.Coluna - 1); while (Tabuleiro.VerificarPosicao(aux) && PodeMover(aux)) { movimentos[aux.Linha, aux.Coluna] = true; if (Tabuleiro.ObterPeca(aux) != null && Tabuleiro.ObterPeca(aux).Cor != this.Cor) { break; } aux.Linha -= 1; aux.Coluna -= 1; } aux.DefinirPosicao(Posicao.Linha + 1, Posicao.Coluna + 1); while (Tabuleiro.VerificarPosicao(aux) && PodeMover(aux)) { movimentos[aux.Linha, aux.Coluna] = true; if (Tabuleiro.ObterPeca(aux) != null && Tabuleiro.ObterPeca(aux).Cor != this.Cor) { break; } aux.Linha += 1; aux.Coluna += 1; } aux.DefinirPosicao(Posicao.Linha - 1, Posicao.Coluna + 1); while (Tabuleiro.VerificarPosicao(aux) && PodeMover(aux)) { movimentos[aux.Linha, aux.Coluna] = true; if (Tabuleiro.ObterPeca(aux) != null && Tabuleiro.ObterPeca(aux).Cor != this.Cor) { break; } aux.Coluna += 1; aux.Linha -= 1; } aux.DefinirPosicao(Posicao.Linha + 1, Posicao.Coluna - 1); while (Tabuleiro.VerificarPosicao(aux) && PodeMover(aux)) { movimentos[aux.Linha, aux.Coluna] = true; if (Tabuleiro.ObterPeca(aux) != null && Tabuleiro.ObterPeca(aux).Cor != this.Cor) { break; } aux.Coluna -= 1; aux.Linha += 1; } return(movimentos); }
public void ValidarDestino(Posicao origem, Posicao destino) { if (!Tabuleiro.VerificarPosicao(destino)) { throw new TabuleiroException("A POSIÇÃO INFORMADA É INVÁLIDA!"); } if (!Tabuleiro.ObterPeca(origem).MovimentoPossivel(destino)) { throw new TabuleiroException("A PEÇA SELECIONADA NÂO PODE MOVER PARA ESSA POSIÇÃO!"); } }
public void ValidarOrigem(Posicao posicao) { if (!Tabuleiro.VerificarPosicao(posicao)) { throw new TabuleiroException("A POSIÇÃO INFORMADA É INVÁLIDA!"); } if (Tabuleiro.ExistePeca(posicao)) { throw new TabuleiroException("NÃO EXISTEM PEÇAS NA POSIÇÃO INFORMADA!"); } if (Tabuleiro.ObterPeca(posicao).Cor != JogadorAtual) { throw new TabuleiroException("A PEÇA ESCOLHIDA É DE OUTRO JOGADOR!"); } if (!Tabuleiro.ObterPeca(posicao).ExisteMovimentoPossivel()) { throw new TabuleiroException("A PEÇA ESCOLHIDA NÃO POSSUI MOVIMENTOS DISPONÍVEIS!"); } }
public override bool[,] MovimentosPossiveis() { bool[,] movimentos = new bool[Tabuleiro.Linhas, Tabuleiro.Colunas]; Posicao aux = new Posicao(0, 0); Posicao aux2 = new Posicao(0, 0); if (Cor == Cor.Vermelho) { aux.DefinirPosicao(Posicao.Linha - 1, Posicao.Coluna); if (Tabuleiro.VerificarPosicao(aux) && Livre(aux)) { movimentos[aux.Linha, aux.Coluna] = true; } aux.DefinirPosicao(Posicao.Linha - 2, Posicao.Coluna); aux2.DefinirPosicao(Posicao.Linha - 1, Posicao.Coluna); if (Tabuleiro.VerificarPosicao(aux) && Livre(aux) && Livre(aux2) && QtdMovimentos == 0) { movimentos[aux.Linha, aux.Coluna] = true; } aux.DefinirPosicao(Posicao.Linha - 1, Posicao.Coluna - 1); if (Tabuleiro.VerificarPosicao(aux) && ExisteInimigo(aux)) { movimentos[aux.Linha, aux.Coluna] = true; } aux.DefinirPosicao(Posicao.Linha - 1, Posicao.Coluna + 1); if (Tabuleiro.VerificarPosicao(aux) && ExisteInimigo(aux)) { movimentos[aux.Linha, aux.Coluna] = true; } } else { aux.DefinirPosicao(Posicao.Linha + 1, Posicao.Coluna); if (Tabuleiro.VerificarPosicao(aux) && Livre(aux)) { movimentos[aux.Linha, aux.Coluna] = true; } aux.DefinirPosicao(Posicao.Linha + 2, Posicao.Coluna); aux2.DefinirPosicao(Posicao.Linha + 1, Posicao.Coluna); if (Tabuleiro.VerificarPosicao(aux) && Livre(aux) && Livre(aux2) && QtdMovimentos == 0) { movimentos[aux.Linha, aux.Coluna] = true; } aux.DefinirPosicao(Posicao.Linha + 1, Posicao.Coluna - 1); if (Tabuleiro.VerificarPosicao(aux) && ExisteInimigo(aux)) { movimentos[aux.Linha, aux.Coluna] = true; } aux.DefinirPosicao(Posicao.Linha + 1, Posicao.Coluna + 1); if (Tabuleiro.VerificarPosicao(aux) && ExisteInimigo(aux)) { movimentos[aux.Linha, aux.Coluna] = true; } } return(movimentos); }