Esempio n. 1
0
        public void ValidarOrigem(Posicao origem)
        {
            if (!Tabuleiro.ExistePeca(origem))
            {
                throw new TabuleiroException("Não existe peça na posição de origem!");
            }

            if (Tabuleiro.GetPeca(origem).Cor != JogadorAtual)
            {
                throw new TabuleiroException("A peça de origem escolhida não é sua!");
            }

            if (!Tabuleiro.GetPeca(origem).ExisteMovimentoPossivel())
            {
                throw new TabuleiroException("Não há movimentos possíveis para a peça de origem escolhida!");
            }
        }
Esempio n. 2
0
        public override bool[,] GetMovimentosPossiveis()
        {
            bool[,] m = new bool[Tabuleiro.Linhas, Tabuleiro.Colunas];
            Posicao pos = new Posicao(0, 0);

            // NORTE
            pos.SetPosicao(Posicao.Linha - 1, Posicao.Coluna);
            while (!Tabuleiro.IsPosicaoInvalida(pos) && IsMovimentoPossivel(pos))
            {
                m[pos.Linha, pos.Coluna] = true;

                if (Tabuleiro.GetPeca(pos) != null && Tabuleiro.GetPeca(pos).Cor != Cor)
                {
                    break;
                }

                pos.Linha--;
            }

            // NE
            pos.SetPosicao(Posicao.Linha - 1, Posicao.Coluna + 1);
            while (!Tabuleiro.IsPosicaoInvalida(pos) && IsMovimentoPossivel(pos))
            {
                m[pos.Linha, pos.Coluna] = true;

                if (Tabuleiro.GetPeca(pos) != null && Tabuleiro.GetPeca(pos).Cor != Cor)
                {
                    break;
                }

                pos.Linha--;
                pos.Coluna++;
            }

            // LESTE
            pos.SetPosicao(Posicao.Linha, Posicao.Coluna + 1);
            while (!Tabuleiro.IsPosicaoInvalida(pos) && IsMovimentoPossivel(pos))
            {
                m[pos.Linha, pos.Coluna] = true;

                if (Tabuleiro.GetPeca(pos) != null && Tabuleiro.GetPeca(pos).Cor != Cor)
                {
                    break;
                }

                pos.Coluna++;
            }

            // SE
            pos.SetPosicao(Posicao.Linha + 1, Posicao.Coluna + 1);
            while (!Tabuleiro.IsPosicaoInvalida(pos) && IsMovimentoPossivel(pos))
            {
                m[pos.Linha, pos.Coluna] = true;

                if (Tabuleiro.GetPeca(pos) != null && Tabuleiro.GetPeca(pos).Cor != Cor)
                {
                    break;
                }

                pos.Linha++;
                pos.Coluna++;
            }

            // SUL
            pos.SetPosicao(Posicao.Linha + 1, Posicao.Coluna);
            while (!Tabuleiro.IsPosicaoInvalida(pos) && IsMovimentoPossivel(pos))
            {
                m[pos.Linha, pos.Coluna] = true;

                if (Tabuleiro.GetPeca(pos) != null && Tabuleiro.GetPeca(pos).Cor != Cor)
                {
                    break;
                }

                pos.Linha++;
            }

            // SO
            pos.SetPosicao(Posicao.Linha + 1, Posicao.Coluna - 1);
            while (!Tabuleiro.IsPosicaoInvalida(pos) && IsMovimentoPossivel(pos))
            {
                m[pos.Linha, pos.Coluna] = true;

                if (Tabuleiro.GetPeca(pos) != null && Tabuleiro.GetPeca(pos).Cor != Cor)
                {
                    break;
                }

                pos.Linha++;
                pos.Coluna--;
            }

            // OESTE
            pos.SetPosicao(Posicao.Linha, Posicao.Coluna - 1);
            while (!Tabuleiro.IsPosicaoInvalida(pos) && IsMovimentoPossivel(pos))
            {
                m[pos.Linha, pos.Coluna] = true;

                if (Tabuleiro.GetPeca(pos) != null && Tabuleiro.GetPeca(pos).Cor != Cor)
                {
                    break;
                }

                pos.Coluna--;
            }

            // NO
            pos.SetPosicao(Posicao.Linha - 1, Posicao.Coluna - 1);
            while (!Tabuleiro.IsPosicaoInvalida(pos) && IsMovimentoPossivel(pos))
            {
                m[pos.Linha, pos.Coluna] = true;

                if (Tabuleiro.GetPeca(pos) != null && Tabuleiro.GetPeca(pos).Cor != Cor)
                {
                    break;
                }

                pos.Linha--;
                pos.Coluna--;
            }

            return(m);
        }
Esempio n. 3
0
 private bool EstaLivre(Posicao pos)
 {
     return(Tabuleiro.GetPeca(pos) == null);
 }
Esempio n. 4
0
        private bool ExisteInimigo(Posicao pos)
        {
            Peca p = Tabuleiro.GetPeca(pos);

            return(p != null && p.Cor != Cor);
        }