コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
 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!");
     }
 }
コード例 #4
0
 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!");
     }
 }
コード例 #5
0
        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);
        }