public MatchResume Start() { MatchResume matchResume = new MatchResume(); MatchControl matchControl = new MatchControl { Id = Guid.NewGuid(), }; matchControl.Random = new Random(); int playerId = matchControl.Random.Next(0, 3); if (playerId.Equals(1) || playerId.Equals(3)) { matchControl.FirstPlayer = matchControl.playerOne.PlayerLetter; } else { matchControl.FirstPlayer = matchControl.playerTwo.PlayerLetter; } MapeamentoIncial(matchControl); matchResume.Id = matchControl.Id; matchResume.FirstPlayer = matchControl.FirstPlayer; _memoryCache.Set("MatchControl", matchControl); return(matchResume); }
public async Task <ActionResult> Game() { MatchResume match = _matchApplication.Start(); _memoryCache.Set(match.Id.ToString(), match); _memoryCache.Set("Round", 1); return(Ok(JsonConvert.SerializeObject(match))); }
private void Jogada(MatchMoviment matchMoviment, MatchResume matchResume, MatchControl matchControl) { if (ValidarJogada(matchControl, matchMoviment)) { CachePrepare(matchMoviment, matchResume, matchControl); if (matchMoviment.Round >= 5) { VerificaVitoria(matchControl); } } }
/// <summary> /// Metodo que carrega e exclui o Cache /// </summary> /// <param name="matchMoviment"></param> /// <param name="matchResume"></param> /// <param name="matchControl"></param> private void CachePrepare(MatchMoviment matchMoviment, MatchResume matchResume, MatchControl matchControl) { matchControl.LastPlayer = matchMoviment.Player; _memoryCache.Remove(matchMoviment.Id.ToString()); _memoryCache.Set(matchMoviment.Id.ToString(), matchResume); _memoryCache.Remove("MatchControl"); _memoryCache.Set("MatchControl", matchControl); _memoryCache.Remove("Round"); matchMoviment.Round++; _memoryCache.Set("Round", matchMoviment.Round); }
/// <summary> /// Validações /// </summary> /// <param name="matchMoviment"></param> /// <returns></returns> public string MatchMoviment(MatchMoviment matchMoviment) { this.msg = "Jogada Efetuada com Sucesso"; MatchResume matchResume = (MatchResume)_memoryCache.Get(matchMoviment.Id.ToString()); if (matchResume == null) { return("Partida não encontrada"); } matchMoviment.Round = (int)_memoryCache.Get("Round"); MatchControl matchControl = (MatchControl)_memoryCache.Get("MatchControl"); if (!ValidaTurno(matchControl, matchMoviment)) { return("Não é turno do jogador"); } Jogada(matchMoviment, matchResume, matchControl); return(msg); }