示例#1
0
        public void realizaJogada(Posicao origem, Posicao destino)
        {
            Peca pecaCapturada = executaMovimento(origem, destino);

            if (estaEmXeque(jogadorAtual))
            {
                desfazMovimento(origem, destino, pecaCapturada);
                throw new TabuleiroException("Você não pode se colocar em xeque!");
            }

            Peca p = tab.peca(destino);

            //#jogadaespecial promocao
            if (p is Peao)
            {
                if ((p.cor == Cor.Branca && destino.linha == 0) || (p.cor == Cor.Branca && destino.linha == 7))
                {
                    p = tab.retirarPeca(destino);
                    pecas.Remove(p);
                    Peca dama = new Dama(tab, p.cor);
                    tab.colocarPeca(dama, destino);
                    pecas.Add(dama);
                }
            }

            if (estaEmXeque(adversaria(jogadorAtual)))
            {
                xeque = true;
            }
            else
            {
                xeque = false;
            }

            if (testeXequemate(adversaria(jogadorAtual)))
            {
                terminada = true;
            }
            else
            {
                turno++;
                mudaJogador();
            }

            //#jogadaespecial en passant
            if (p is Peao && (destino.linha == origem.linha - 2 || destino.linha == origem.linha + 2))
            {
                vulneravelEnPassant = p;
            }
            else
            {
                vulneravelEnPassant = null;
            }
        }
示例#2
0
        public static Peca LerPecaPromocao(Tabuleiro tab, Cor cor)
        {
            Console.WriteLine();
            Console.WriteLine("Peão promovido! escolha uma nova peça:");
            Console.WriteLine("D - Dama");
            Console.WriteLine("C - Cavalo");
            Console.WriteLine("B - Bispo");
            Console.WriteLine("T - Torre");
            Console.Write("Digite a inicial da nova peça: ");
            char ch = char.Parse(Console.ReadLine());
            Peca p  = null;

            switch (ch)
            {
            case 'D':
                p = new Dama(tab, cor);
                break;

            case 'C':
                p = new Cavalo(tab, cor);
                break;

            case 'B':
                p = new Bispo(tab, cor);
                break;

            case 'T':
                p = new Torre(tab, cor);
                break;

            default:
                Console.WriteLine("Valor inválido!!");
                break;
            }
            return(p);
        }