Пример #1
0
        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);
        }
Пример #2
0
        public async Task <ActionResult> Game()
        {
            MatchResume match = _matchApplication.Start();

            _memoryCache.Set(match.Id.ToString(), match);
            _memoryCache.Set("Round", 1);

            return(Ok(JsonConvert.SerializeObject(match)));
        }
Пример #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);
                }
            }
        }
Пример #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);
        }
Пример #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);
        }