Esempio n. 1
0
        public override bool[,] GetMovimentosPossiveis()
        {
            bool[,] m = new bool[Tabuleiro.Linhas, Tabuleiro.Colunas];
            Posicao pos = new Posicao(0, 0);

            if (Cor == Cor.Branca)
            {
                // 1 NORTE
                pos.SetPosicao(Posicao.Linha - 1, Posicao.Coluna);
                if (!Tabuleiro.IsPosicaoInvalida(pos) && EstaLivre(pos))
                {
                    m[pos.Linha, pos.Coluna] = true;
                }

                // 2 NORTE
                pos.SetPosicao(Posicao.Linha - 2, Posicao.Coluna);
                if (!Tabuleiro.IsPosicaoInvalida(pos) && EstaLivre(pos) && QtdMovimentos == 0)
                {
                    m[pos.Linha, pos.Coluna] = true;
                }

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

                // NO
                pos.SetPosicao(Posicao.Linha - 1, Posicao.Coluna - 1);
                if (!Tabuleiro.IsPosicaoInvalida(pos) && ExisteInimigo(pos))
                {
                    m[pos.Linha, pos.Coluna] = true;
                }
            }
            else
            {
                // 1 SUL
                pos.SetPosicao(Posicao.Linha + 1, Posicao.Coluna);
                if (!Tabuleiro.IsPosicaoInvalida(pos) && EstaLivre(pos))
                {
                    m[pos.Linha, pos.Coluna] = true;
                }

                // 2 SUL
                pos.SetPosicao(Posicao.Linha + 2, Posicao.Coluna);
                if (!Tabuleiro.IsPosicaoInvalida(pos) && EstaLivre(pos) && QtdMovimentos == 0)
                {
                    m[pos.Linha, pos.Coluna] = true;
                }

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

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

            return(m);
        }
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
        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);
            if (!Tabuleiro.IsPosicaoInvalida(pos) && IsMovimentoPossivel(pos))
            {
                m[pos.Linha, pos.Coluna] = true;
            }

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

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

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

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

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

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

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

            return(m);
        }