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()); }
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)); }
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"); }
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); }
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); }