private bool ValidarJogada(MatchControl matchControl, MatchMoviment matchMoviment) { MatchMap matchMap = new MatchMap() { X = matchMoviment.Position.x, Y = matchMoviment.Position.y }; foreach (var item in matchControl.GamePositions) { if (item.Value.X.Equals(matchMap.X) && item.Value.Y.Equals(matchMap.Y)) { int key = item.Key; if (item.Value.Player != null) { this.msg = "Campo já foi selecionado em outra rodada"; return(false); } matchControl.GamePositions[key].Player = matchMoviment.Player; break; } } return(true); }
private bool ValidaTurno(MatchControl matchControl, MatchMoviment matchMoviment) { if ((matchMoviment.Round.Equals(1) && !matchControl.FirstPlayer.Equals(matchMoviment.Player)) || matchMoviment.Player.Equals(matchControl.LastPlayer)) { return(false); } return(true); }
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); }
public async Task <ActionResult> Movement(MatchMoviment match) { string msg = _matchApplication.MatchMoviment(match); return(Ok(msg)); }