public void executaMov(posicao origem, posicao destino)
        {
            Peca p = tab.retirarPeca(origem);

            p.incrementarQntdMov();
            Peca pecaCapturada = tab.retirarPeca(destino);

            tab.colocarPeca(p, destino);
        }
Example #2
0
        public override bool[,] movimentosPosiveis()
        {
            bool[,] mat = new bool[tab.linhas, tab.colunas];
            posicao Pos = new posicao(0, 0);

            // acima
            Pos.definirValores(posicao.linha - 1, posicao.coluna);
            while (tab.posicaoValida(Pos) && podeMover(Pos))
            {
                mat[Pos.linha, Pos.coluna] = true;
                if (tab.Peca(Pos) != null && tab.Peca(Pos).cor != cor)
                {
                    break;
                }
                Pos.linha = Pos.linha - 1;
            }

            // baixo
            Pos.definirValores(posicao.linha + 1, posicao.coluna);
            while (tab.posicaoValida(Pos) && podeMover(Pos))
            {
                mat[Pos.linha, Pos.coluna] = true;
                if (tab.Peca(Pos) != null && tab.Peca(Pos).cor != cor)
                {
                    break;
                }
                Pos.linha = Pos.linha + 1;
            }

            // direita
            Pos.definirValores(posicao.linha, posicao.coluna + 1);
            while (tab.posicaoValida(Pos) && podeMover(Pos))
            {
                mat[Pos.linha, Pos.coluna] = true;
                if (tab.Peca(Pos) != null && tab.Peca(Pos).cor != cor)
                {
                    break;
                }
                Pos.linha = Pos.coluna + 1;
            }

            // esquerda
            Pos.definirValores(posicao.linha, posicao.coluna - 1);
            while (tab.posicaoValida(Pos) && podeMover(Pos))
            {
                mat[Pos.linha, Pos.coluna] = true;
                if (tab.Peca(Pos) != null && tab.Peca(Pos).cor != cor)
                {
                    break;
                }
                Pos.linha = Pos.coluna - 1;
            }

            return(mat);
        }
Example #3
0
        public object Desempilha()
        {
            if (primeiro == null)
            {
                throw new InvalidOperationException("A pilha esta vazia");
            }
            object resultado = primeiro.item;

            primeiro = primeiro.proximo;
            return(resultado);
        }
Example #4
0
        static void Main(string[] args)
        {
            try {
                PartidaDeXadrez partida = new PartidaDeXadrez();

                while (!partida.terminada)
                {
                    Console.Clear();
                    Tela.imprimirTab(partida.tab);

                    Console.WriteLine();

                    Console.Write("Posição de origem da peça: ");
                    posicao origem = Tela.lerPosicaoXadrez().toPosicao();
                    Console.Write("Posição de destino da peça: ");
                    posicao destino = Tela.lerPosicaoXadrez().toPosicao();

                    partida.executaMov(origem, destino);
                }
            }
            catch (TabuleiroExeption e) {
                Console.WriteLine(e.Message);
            }
        }
Example #5
0
 public void Empilha(object item)
 {
     primeiro = new posicao(primeiro, item);
 }
Example #6
0
 public posicao(posicao proximo, object item)
 {
     this.proximo = proximo;
     this.item    = item;
 }
Example #7
0
        public override bool[,] movimentosPosiveis()
        {
            bool[,] mat = new bool[tab.linhas, tab.colunas];
            posicao Pos = new posicao(0, 0);

            // acima
            Pos.definirValores(posicao.linha - 1, posicao.coluna);
            if (tab.posicaoValida(Pos) && podeMover(Pos))
            {
                mat[Pos.linha, Pos.coluna] = true;
            }

            // nordeste
            Pos.definirValores(posicao.linha - 1, posicao.coluna + 1);
            if (tab.posicaoValida(Pos) && podeMover(Pos))
            {
                mat[Pos.linha, Pos.coluna] = true;
            }

            // direita
            Pos.definirValores(posicao.linha, posicao.coluna + 1);
            if (tab.posicaoValida(Pos) && podeMover(Pos))
            {
                mat[Pos.linha, Pos.coluna] = true;
            }

            // sudeste
            Pos.definirValores(posicao.linha + 1, posicao.coluna + 1);
            if (tab.posicaoValida(Pos) && podeMover(Pos))
            {
                mat[Pos.linha, Pos.coluna] = true;
            }

            // baixo
            Pos.definirValores(posicao.linha + 1, posicao.coluna);
            if (tab.posicaoValida(Pos) && podeMover(Pos))
            {
                mat[Pos.linha, Pos.coluna] = true;
            }

            // sudoeste
            Pos.definirValores(posicao.linha + 1, posicao.coluna - 1);
            if (tab.posicaoValida(Pos) && podeMover(Pos))
            {
                mat[Pos.linha, Pos.coluna] = true;
            }

            // esquerda
            Pos.definirValores(posicao.linha, posicao.coluna - 1);
            if (tab.posicaoValida(Pos) && podeMover(Pos))
            {
                mat[Pos.linha, Pos.coluna] = true;
            }

            // noroeste
            Pos.definirValores(posicao.linha - 1, posicao.coluna - 1);
            if (tab.posicaoValida(Pos) && podeMover(Pos))
            {
                mat[Pos.linha, Pos.coluna] = true;
            }

            return(mat);
        }
Example #8
0
        private bool podeMover(posicao pos)
        {
            Peca p = tab.Peca(pos);

            return(p == null || p.cor != this.cor);
        }
Example #9
0
 public void colocarPeca(Peca p, posicao pos)
 {
     pecas[pos.linha, pos.coluna] = p;
     p.posicao = pos;
 }