Пример #1
0
        public void Atualizar(Jogada jogada, int cor, string salaHash)
        {
            Partida   partida   = SALAS.FirstOrDefault(s => s.Key == salaHash).Value;
            Tabuleiro tabuleiro = partida.Tabuleiro;
            int       numPecas  = tabuleiro.Pecas.Count;

            if ((Cor)cor != tabuleiro.CorTurnoAtual)
            {
                Clients.Group(salaHash).alterarTabuleiro("Turno do adversário");
                return;
            }
            if (!tabuleiro.AtualizarJogada(jogada))
            {
                Clients.Group(salaHash).alterarTabuleiro("Jogada inválida");
                return;
            }
            if (tabuleiro.Pecas.Count < numPecas)
            {
                tabuleiro.AplicarRodadaBonus(jogada);
            }
            else
            {
                tabuleiro.PercorrerTabuleiro(tabuleiro.CorTurnoAtual);
            }

            partida.EditarTabuleiro(tabuleiro);

            if (partida.ValidarFimJogo(tabuleiro.CorTurnoAtual))
            {
                Clients.Group(salaHash).alterarTabuleiro("Você venceu!");
                return;
            }
            Clients.Group(salaHash).alterarTabuleiro(tabuleiro.CorTurnoAtual.ToString());
        }
Пример #2
0
        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 HttpResponseMessage Atualizar([FromBody] Jogada jogada, int cor)
        {
            Tabuleiro tabuleiro = tabuleiroRepository.ObterTabuleiro();
            int       numPecas  = tabuleiro.Pecas.Count;

            if ((Cor)cor != tabuleiro.CorTurnoAtual)
            {
                return(ResponderErro("Turno do adversário"));
            }

            if (!tabuleiro.AtualizarJogada(jogada))
            {
                return(ResponderErro("Jogada inválida"));
            }

            if (tabuleiro.Pecas.Count < numPecas)
            {
                tabuleiro.AplicarRodadaBonus(jogada);
            }
            else
            {
                tabuleiro.PercorrerTabuleiro(tabuleiro.CorTurnoAtual);
            }

            tabuleiroRepository.EditarTabuleiro(tabuleiro);

            if (tabuleiro.ValidarFimJogo())
            {
                return(ResponderOK("Você venceu!"));
            }

            return(ResponderOK(tabuleiro.CorTurnoAtual));
        }
Пример #4
0
        public void Atualizar(JogadaModel jogadaModel, int cor, string salaHash)
        {
            Jogada    jogada    = new Jogada(jogadaModel.PosicaoEscolhida, jogadaModel.PosicaoAntiga);
            Partida   partida   = SALAS.FirstOrDefault(s => s.Key == salaHash).Value;
            Tabuleiro tabuleiro = partida.Tabuleiro;
            int       numPecas  = tabuleiro.Pecas.Count;

            if ((Cor)cor != tabuleiro.CorTurnoAtual)
            {
                return;
            }
            if (!tabuleiro.AtualizarJogada(jogada))
            {
                return;
            }
            if (tabuleiro.Pecas.Count < numPecas)
            {
                tabuleiro.AplicarRodadaBonus(jogada);
            }
            else
            {
                tabuleiro.PercorrerTabuleiro(tabuleiro.CorTurnoAtual);
            }

            partida.EditarTabuleiro(tabuleiro);

            if (partida.ValidarFimJogo(tabuleiro.CorTurnoAtual))
            {
                return;
            }
            Clients.Group(salaHash).ativaSom("movimentacao peca");
        }
Пример #5
0
        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);
        }
Пример #6
0
        public void Aplicar_Rodada_Bonus_Com_Proxima_Peca()
        {
            Peca      peca1     = new Peca(new Point(1, 1), Cor.BRANCA);
            Peca      peca2     = new Peca(new Point(2, 2), Cor.PRETA);
            Peca      peca3     = new Peca(new Point(4, 4), Cor.PRETA);
            Tabuleiro tabuleiro = new Tabuleiro();

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

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

            int numPecasSalto1 = tabuleiro.Pecas.Count;

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

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

            int numPecasSalto2 = tabuleiro.Pecas.Count;

            tabuleiro.AplicarRodadaBonus(jogada1);

            tabuleiro.AtualizarJogada(jogada2);
            int numPecasAtual = tabuleiro.Pecas.Count;

            Assert.AreEqual(numPecasSalto1, 3);
            Assert.AreEqual(numPecasSalto2, 2);
            Assert.AreEqual(numPecasAtual, 1);
            Assert.AreEqual(numPosicoes1, 1);
            Assert.AreEqual(numPosicoes2, 1);
            Assert.AreEqual(tabuleiro.Pecas[0].PosicoesPossiveis.Count, 1);
        }