public void Nao_Aplicar_Rodada_Bonus_Sem_Proxima_Peca()
        {
            Peca      peca1     = new Peca(new Point(1, 1), Cor.BRANCA);
            Peca      peca2     = new Peca(new Point(2, 2), Cor.PRETA);
            Tabuleiro tabuleiro = new Tabuleiro();

            Point  posicaoEsperada1 = new Point(3, 3);
            Jogada jogada1          = new Jogada(posicaoEsperada1, new Point(1, 1));

            tabuleiro.AdicionarPeca(peca1);
            tabuleiro.AdicionarPeca(peca2);

            int numPecasSalto1 = tabuleiro.Pecas.Count;

            tabuleiro.PercorrerTabuleiro(Cor.BRANCA);
            int numPosicoes1 = tabuleiro.Pecas[0].PosicoesPossiveis.Count;

            tabuleiro.AtualizarJogada(jogada1);
            tabuleiro.PercorrerTabuleiro(Cor.BRANCA);
            int numPosicoes2  = tabuleiro.Pecas[0].PosicoesPossiveis.Count;
            int numPecasAtual = tabuleiro.Pecas.Count;

            Assert.AreEqual(numPecasSalto1, 2);
            Assert.AreEqual(numPecasAtual, 1);
            Assert.AreEqual(numPosicoes1, 1);
            Assert.AreEqual(numPosicoes2, 2);
        }
        public void Trocar_De_Turno_Apos_Movimento()
        {
            Peca      peca1     = new Peca(new Point(4, 4), Cor.BRANCA);
            Peca      peca2     = new Peca(new Point(5, 5), Cor.PRETA);
            Tabuleiro tabuleiro = new Tabuleiro();

            Point  posicaoEsperada1 = new Point(6, 6);
            Jogada jogada1          = new Jogada(posicaoEsperada1, new Point(4, 4));

            tabuleiro.AdicionarPeca(peca1);
            tabuleiro.AdicionarPeca(peca2);

            tabuleiro.PercorrerTabuleiro(Cor.BRANCA);
            Cor cor1 = tabuleiro.CorTurnoAtual;

            tabuleiro.AtualizarJogada(jogada1);
            Cor cor2 = tabuleiro.CorTurnoAtual;

            tabuleiro.AplicarRodadaBonus(jogada1);
            Cor cor3 = tabuleiro.CorTurnoAtual;

            Assert.AreEqual(cor1, Cor.BRANCA);
            Assert.AreEqual(cor2, Cor.BRANCA);
            Assert.AreEqual(cor3, Cor.PRETA);
        }
        public void Mover_Dama_Preta_Todas_Direcoes_Saltando_Pecas_Inimigas()
        {
            Peca peca1 = new Peca(new Point(4, 4), Cor.PRETA);
            Peca peca2 = new Peca(new Point(5, 5), Cor.BRANCA);
            Peca peca3 = new Peca(new Point(3, 5), Cor.BRANCA);
            Peca peca4 = new Peca(new Point(5, 3), Cor.BRANCA);
            Peca peca5 = new Peca(new Point(3, 3), Cor.BRANCA);

            Tabuleiro tabuleiro = new Tabuleiro();

            tabuleiro.AdicionarPeca(peca1);
            tabuleiro.AdicionarPeca(peca2);
            tabuleiro.AdicionarPeca(peca3);
            tabuleiro.AdicionarPeca(peca4);
            tabuleiro.AdicionarPeca(peca5);

            peca1.TransformarEmDama();
            tabuleiro.PercorrerTabuleiro(Cor.PRETA);

            Assert.AreEqual(peca1.PosicoesPossiveis.Count, 4);

            Assert.IsTrue(peca1.PosicoesPossiveis[0].Equals(new Point(6, 2)));
            Assert.IsTrue(peca1.PosicoesPossiveis[1].Equals(new Point(2, 2)));
            Assert.IsTrue(peca1.PosicoesPossiveis[2].Equals(new Point(6, 6)));
            Assert.IsTrue(peca1.PosicoesPossiveis[3].Equals(new Point(2, 6)));
        }
        public void Mover_Varias_Pecas_Dentro_Do_Tabuleiro()
        {
            Peca      peca1     = new Peca(new Point(2, 2), Cor.BRANCA);
            Peca      peca2     = new Peca(new Point(4, 4), Cor.BRANCA);
            Tabuleiro tabuleiro = new Tabuleiro();

            Point posicaoEsperadaEsquerda1 = new Point(1, 3);
            Point posicaoEsperadaDireita1  = new Point(3, 3);

            Point posicaoEsperadaEsquerda2 = new Point(3, 5);
            Point posicaoEsperadaDireita2  = new Point(5, 5);

            tabuleiro.AdicionarPeca(peca1);
            tabuleiro.AdicionarPeca(peca2);
            tabuleiro.PercorrerTabuleiro(Cor.BRANCA);

            Assert.AreEqual(peca1.PosicoesPossiveis.Count, 2);
            Assert.AreEqual(peca2.PosicoesPossiveis.Count, 2);

            Assert.AreEqual(peca1.PosicoesPossiveis[0], posicaoEsperadaDireita1);
            Assert.AreEqual(peca1.PosicoesPossiveis[1], posicaoEsperadaEsquerda1);

            Assert.AreEqual(peca2.PosicoesPossiveis[0], posicaoEsperadaDireita2);
            Assert.AreEqual(peca2.PosicoesPossiveis[1], posicaoEsperadaEsquerda2);
        }
        public void Nao_Mover_Peca_Preta_Para_Casa_Ocupada_Por_Preta()
        {
            Peca      peca1     = new Peca(new Point(5, 5), Cor.PRETA);
            Peca      peca2     = new Peca(new Point(4, 4), Cor.PRETA);
            Tabuleiro tabuleiro = new Tabuleiro();

            tabuleiro.AdicionarPeca(peca1);
            tabuleiro.AdicionarPeca(peca2);
            tabuleiro.PercorrerTabuleiro(Cor.PRETA);

            Assert.AreEqual(peca1.PosicoesPossiveis.Count, 1);
            Assert.AreEqual(peca1.PosicoesPossiveis[0], new Point(6, 4));
        }
Example #6
0
        private void ReverteMovimento(Posicao origem, Posicao destino, Peca pecaCapturada)
        {
            Peca p = Tabuleiro.MoverPeca(destino, origem, true);

            if (pecaCapturada != null)
            {
                _capturadas.Remove(pecaCapturada);
                // #JogadaEspecial EnPassant
                if ((p is Peao) && (destino.Coluna != origem.Coluna) && (pecaCapturada == PecaVulneravelEnPassant))
                {
                    Posicao nPos = new Posicao((pecaCapturada.Cor == Cor.Branco ? destino.Linha - 1 : destino.Linha + 1), destino.Coluna);
                    Tabuleiro.AdicionarPeca(pecaCapturada, nPos);
                }
                else
                {
                    Tabuleiro.AdicionarPeca(pecaCapturada, destino);
                }
            }
            // #JogadaEspecial Roque Pequeno
            if ((p is Rei) && (destino.Coluna == origem.Coluna + 2))
            {
                Tabuleiro.MoverPeca(new Posicao(origem.Linha, origem.Coluna + 1), new Posicao(origem.Linha, origem.Coluna + 3), true);
            }
            // #JogadaEspecial Roque Grande
            if ((p is Rei) && (destino.Coluna == origem.Coluna - 2))
            {
                Tabuleiro.MoverPeca(new Posicao(origem.Linha, origem.Coluna - 1), new Posicao(origem.Linha, origem.Coluna - 4), true);
            }
        }
        public void Nao_Trocar_De_Turno_Em_Rodada_Bonus()
        {
            Peca      peca1     = new Peca(new Point(4, 4), Cor.BRANCA);
            Peca      peca2     = new Peca(new Point(5, 5), Cor.PRETA);
            Peca      peca3     = new Peca(new Point(7, 7), Cor.PRETA);
            Tabuleiro tabuleiro = new Tabuleiro();

            Point  posicaoEsperada1 = new Point(6, 6);
            Point  posicaoEsperada2 = new Point(8, 8);
            Jogada jogada1          = new Jogada(posicaoEsperada1, new Point(4, 4));
            Jogada jogada2          = new Jogada(posicaoEsperada2, new Point(6, 6));

            tabuleiro.AdicionarPeca(peca1);
            tabuleiro.AdicionarPeca(peca2);
            tabuleiro.AdicionarPeca(peca3);

            Cor cor1 = tabuleiro.CorTurnoAtual;

            tabuleiro.PercorrerTabuleiro(Cor.BRANCA);

            Cor cor2 = tabuleiro.CorTurnoAtual;

            tabuleiro.AtualizarJogada(jogada1);

            Cor cor3 = tabuleiro.CorTurnoAtual;

            tabuleiro.AplicarRodadaBonus(jogada1);

            Cor cor4 = tabuleiro.CorTurnoAtual;

            tabuleiro.AtualizarJogada(jogada2);

            Cor cor5 = tabuleiro.CorTurnoAtual;

            tabuleiro.AplicarRodadaBonus(jogada2);
            Cor cor6 = tabuleiro.CorTurnoAtual;

            Assert.AreEqual(cor1, Cor.BRANCA);
            Assert.AreEqual(cor2, Cor.BRANCA);
            Assert.AreEqual(cor2, Cor.BRANCA);
            Assert.AreEqual(cor4, Cor.BRANCA);
            Assert.AreEqual(cor5, Cor.BRANCA);
            Assert.AreEqual(cor6, Cor.PRETA);
            Assert.IsTrue(peca1.IsDama);
        }
Example #8
0
 public static void ImprimirTabuleiro(Tabuleiro tabuleiro)
 {
     for (int i = 0; i < tabuleiro.Linhas; i++)
     {
         for (int j = 0; j < tabuleiro.Colunas; j++)
         {
             if (tabuleiro.AdicionarPeca(i, j) == null)
             {
                 Console.Write("- ");
             }
             else
             {
                 Console.Write(tabuleiro.AdicionarPeca(i, j) + " ");
             }
         }
         Console.WriteLine();
     }
 }
        public void Nao_Mover_Peca_Para_Posicao_Nao_Calculada()
        {
            Peca      peca1     = new Peca(new Point(1, 1), Cor.BRANCA);
            Peca      peca2     = new Peca(new Point(2, 2), Cor.PRETA);
            Tabuleiro tabuleiro = new Tabuleiro();

            Jogada jogada = new Jogada(new Point(4, 1), new Point(1, 1));

            tabuleiro.AdicionarPeca(peca1);
            tabuleiro.AdicionarPeca(peca2);

            tabuleiro.PercorrerTabuleiro(Cor.BRANCA);
            bool estado = tabuleiro.AtualizarJogada(jogada);

            Assert.IsFalse(estado);
            Assert.AreEqual(peca1.PosicoesPossiveis.Count, 1);
            Assert.AreEqual(peca2.PosicoesPossiveis.Count, 0);
        }
        public void Nao_Mover_Peca_Com_Coordenadas_Incorretas()
        {
            Peca      peca1     = new Peca(new Point(1, 1), Cor.BRANCA);
            Peca      peca2     = new Peca(new Point(2, 2), Cor.PRETA);
            Tabuleiro tabuleiro = new Tabuleiro();

            Point  posicaoEsperada = new Point(3, 3);
            Jogada jogada          = new Jogada(posicaoEsperada, new Point(7, 7));

            tabuleiro.AdicionarPeca(peca1);
            tabuleiro.AdicionarPeca(peca2);

            tabuleiro.PercorrerTabuleiro(Cor.BRANCA);
            bool estado = tabuleiro.AtualizarJogada(jogada);

            Assert.IsFalse(estado);
            Assert.AreEqual(peca1.PosicoesPossiveis.Count, 1);
            Assert.AreEqual(peca2.PosicoesPossiveis.Count, 0);
        }
        public void Nao_Mover_Peca_Fora_Do_Tabuleiro()
        {
            Peca      peca      = new Peca(new Point(8, 8), Cor.BRANCA);
            Tabuleiro tabuleiro = new Tabuleiro();

            tabuleiro.AdicionarPeca(peca);
            tabuleiro.PercorrerTabuleiro(Cor.BRANCA);

            Assert.AreEqual(peca.PosicoesPossiveis.Count, 0);
        }
        public void Nao_Mover_Peca_De_Outra_Cor()
        {
            Peca      peca1     = new Peca(new Point(2, 2), Cor.PRETA);
            Peca      peca2     = new Peca(new Point(4, 4), Cor.BRANCA);
            Tabuleiro tabuleiro = new Tabuleiro();

            Point posicaoEsperadaEsquerda2 = new Point(3, 5);
            Point posicaoEsperadaDireita2  = new Point(5, 5);

            tabuleiro.AdicionarPeca(peca1);
            tabuleiro.AdicionarPeca(peca2);
            tabuleiro.PercorrerTabuleiro(Cor.BRANCA);

            Assert.AreEqual(peca1.PosicoesPossiveis.Count, 0);
            Assert.AreEqual(peca2.PosicoesPossiveis.Count, 2);

            Assert.AreEqual(peca2.PosicoesPossiveis[0], posicaoEsperadaDireita2);
            Assert.AreEqual(peca2.PosicoesPossiveis[1], posicaoEsperadaEsquerda2);
        }
        public void Mover_Peca_Preta_Saltando_Peca_Inimiga()
        {
            Peca      peca1     = new Peca(new Point(5, 5), Cor.PRETA);
            Peca      peca2     = new Peca(new Point(4, 4), Cor.BRANCA);
            Tabuleiro tabuleiro = new Tabuleiro();

            Point posicaoEsperadaEsquerda = new Point(3, 3);
            Point posicaoEsperadaDireita  = new Point(6, 4);

            tabuleiro.AdicionarPeca(peca1);
            tabuleiro.AdicionarPeca(peca2);
            tabuleiro.PercorrerTabuleiro(Cor.PRETA);

            Assert.AreEqual(peca1.PosicoesPossiveis.Count, 2);
            Assert.AreEqual(peca2.PosicoesPossiveis.Count, 0);

            Assert.AreEqual(peca1.PosicoesPossiveis[0], posicaoEsperadaDireita);
            Assert.AreEqual(peca1.PosicoesPossiveis[1], posicaoEsperadaEsquerda);
        }
        public void Mover_Peca_Uma_Posicao_Dentro_Do_Tabuleiro()
        {
            Peca      peca            = new Peca(new Point(1, 1), Cor.BRANCA);
            Tabuleiro tabuleiro       = new Tabuleiro();
            Point     posicaoEsperada = new Point(2, 2);

            tabuleiro.AdicionarPeca(peca);
            tabuleiro.PercorrerTabuleiro(peca.Cor);

            Assert.AreEqual(peca.PosicoesPossiveis.Count, 1);
            Assert.AreEqual(peca.PosicoesPossiveis[0], posicaoEsperada);
        }
        public void Mover_Peca_Duas_Posicoes_Dentro_Do_Tabuleiro()
        {
            Peca      peca      = new Peca(new Point(2, 2), Cor.BRANCA);
            Tabuleiro tabuleiro = new Tabuleiro();
            Point     posicaoEsperadaEsquerda = new Point(1, 3);
            Point     posicaoEsperadaDireita  = new Point(3, 3);

            tabuleiro.AdicionarPeca(peca);
            tabuleiro.PercorrerTabuleiro(peca.Cor);

            Assert.AreEqual(peca.PosicoesPossiveis.Count, 2);
            Assert.AreEqual(peca.PosicoesPossiveis[0], posicaoEsperadaDireita);
            Assert.AreEqual(peca.PosicoesPossiveis[1], posicaoEsperadaEsquerda);
        }
        public void Peca_Preta_Se_Torna_Dama()
        {
            Peca      peca2     = new Peca(new Point(2, 2), Cor.PRETA);
            Tabuleiro tabuleiro = new Tabuleiro();

            Jogada jogada2 = new Jogada(new Point(1, 1), new Point(2, 2));

            tabuleiro.AdicionarPeca(peca2);
            tabuleiro.PercorrerTabuleiro(Cor.PRETA);

            bool estado2 = tabuleiro.AtualizarJogada(jogada2);

            Assert.IsTrue(estado2);
            Assert.IsTrue(peca2.IsDama);
        }
        public void Peca_Branca_Se_Torna_Dama()
        {
            Peca      peca1     = new Peca(new Point(7, 7), Cor.BRANCA);
            Tabuleiro tabuleiro = new Tabuleiro();

            Jogada jogada1 = new Jogada(new Point(8, 8), new Point(7, 7));

            tabuleiro.AdicionarPeca(peca1);
            tabuleiro.PercorrerTabuleiro(Cor.BRANCA);

            bool estado1 = tabuleiro.AtualizarJogada(jogada1);

            Assert.IsTrue(estado1);
            Assert.IsTrue(peca1.IsDama);
        }
        public void Eliminar_Peca_Preta_Quando_Branca_Saltar_Sobre()
        {
            Peca      peca1     = new Peca(new Point(1, 1), Cor.BRANCA);
            Peca      peca2     = new Peca(new Point(2, 2), Cor.PRETA);
            Tabuleiro tabuleiro = new Tabuleiro();

            Point  posicaoEsperada = new Point(3, 3);
            Jogada jogada          = new Jogada(posicaoEsperada, new Point(1, 1));

            tabuleiro.AdicionarPeca(peca1);
            tabuleiro.AdicionarPeca(peca2);

            int numPecasAntes = tabuleiro.Pecas.Count;

            tabuleiro.PercorrerTabuleiro(Cor.BRANCA);

            tabuleiro.AtualizarJogada(jogada);
            int numPecasDepois = tabuleiro.Pecas.Count;

            Assert.AreEqual(numPecasAntes, 2);
            Assert.AreEqual(numPecasDepois, 1);
            Assert.AreEqual(peca1.PosicoesPossiveis.Count, 1);
            Assert.AreEqual(peca2.PosicoesPossiveis.Count, 0);
        }
        public void Mover_Dama_Preta_Todas_Direcoes()
        {
            Peca      peca      = new Peca(new Point(4, 4), Cor.PRETA);
            Tabuleiro tabuleiro = new Tabuleiro();

            tabuleiro.AdicionarPeca(peca);
            peca.TransformarEmDama();
            tabuleiro.PercorrerTabuleiro(Cor.PRETA);

            Assert.AreEqual(peca.PosicoesPossiveis.Count, 4);

            Assert.IsTrue(peca.PosicoesPossiveis[0].Equals(new Point(5, 3)));
            Assert.IsTrue(peca.PosicoesPossiveis[1].Equals(new Point(3, 3)));
            Assert.IsTrue(peca.PosicoesPossiveis[2].Equals(new Point(5, 5)));
            Assert.IsTrue(peca.PosicoesPossiveis[3].Equals(new Point(3, 5)));
        }
Example #20
0
 private void AdicionarPeca(Peca p, int linha, int coluna)
 {
     Tabuleiro.AdicionarPeca(p, new Posicao(linha, coluna));
     _pecas.Add(p);
 }