Esempio n. 1
0
        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);
        }
Esempio n. 2
0
 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);
 }
Esempio n. 3
0
        private void Jogada(MatchMoviment matchMoviment, MatchResume matchResume, MatchControl matchControl)
        {
            if (ValidarJogada(matchControl, matchMoviment))
            {
                CachePrepare(matchMoviment, matchResume, matchControl);

                if (matchMoviment.Round >= 5)
                {
                    VerificaVitoria(matchControl);
                }
            }
        }
Esempio n. 4
0
        /// <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);
        }
Esempio n. 5
0
        /// <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);
        }
Esempio n. 6
0
        public async Task <ActionResult> Movement(MatchMoviment match)
        {
            string msg = _matchApplication.MatchMoviment(match);

            return(Ok(msg));
        }