示例#1
0
        public void Step()
        {
            Game game = _gameRepository.GetContinueableGame(_userId);

            if (game == null)
            {
                throw new InvalidOperationException("Game is not found");
            }
            RoundPlayer user       = _roundPlayerRepository.GetLastRoundPlayerInfo(game.Id, _userId);
            List <Card> roundCards = _cardRepository.GetLastRoundCards(game.Id).ToList();

            if (user.State != RoundPlayerState.None)
            {
                throw new InvalidOperationException("Player can\'t to step when RoundState != None");
            }
            List <long> shuffledCards   = GetShuffledCards(roundCards);
            var         roundPlayerCard = new RoundPlayerCard {
                RoundPlayerId = user.Id, CardId = shuffledCards[0]
            };

            _roundPlayerCardRepository.Add(roundPlayerCard);
            if (!IsStepPossible(game))
            {
                Skip();
            }
        }
示例#2
0
        public int Create(Models.RoundPlayerCard item)
        {
            RoundPlayerCard roundPlayerCard = Mapper.ToEntity(item);

            _context.RoundPlayerCards.Add(roundPlayerCard);
            _context.SaveChanges();
            return(roundPlayerCard.Id);
        }
示例#3
0
 public static DAL.Entities.RoundPlayerCard ToEntity(RoundPlayerCard roundPlayerCard)
 {
     DAL.Entities.RoundPlayerCard roundPlayerCardOut = new DAL.Entities.RoundPlayerCard
     {
         CardId        = roundPlayerCard.CardId,
         RoundPlayerId = roundPlayerCard.RoundPlayerId,
         NumberCard    = roundPlayerCard.NumberCard
     };
     return(roundPlayerCardOut);
 }
示例#4
0
        public void Delete(int id)
        {
            RoundPlayerCard item = _context.RoundPlayerCards.Find(id);

            if (item != null)
            {
                _context.RoundPlayerCards.Remove(item);
                _context.SaveChanges();
            }
        }
示例#5
0
        public static RoundPlayerCard ToModel(DAL.Entities.RoundPlayerCard roundPlayerCard)
        {
            RoundPlayerCard roundPlayerCardOut = new RoundPlayerCard
            {
                CardId        = roundPlayerCard.CardId,
                RoundPlayerId = roundPlayerCard.RoundPlayerId,
                NumberCard    = roundPlayerCard.NumberCard
            };

            return(roundPlayerCardOut);
        }
示例#6
0
        public byte GetRandomCard(int roundPlayerId)
        {
            var             random          = new Random();
            byte            cardId          = (byte)random.Next(1, 52);
            int             numberCard      = _roundPlayerCardRepository.GetCountCardsByRoundPlayer(roundPlayerId) + 1;
            RoundPlayerCard roundPlayerCard = new RoundPlayerCard
            {
                CardId        = cardId,
                RoundPlayerId = roundPlayerId,
                NumberCard    = numberCard
            };

            _roundPlayerCardRepository.Create(roundPlayerCard);
            return(cardId);
        }
示例#7
0
        private void CreateCards(List <RoundPlayer> roundPlayers)
        {
            var roundPlayerCards = new List <RoundPlayerCard>();
            var shuffledCards    = GetShuffledCards();

            for (int i = 0; i < roundPlayers.Count; i++)
            {
                var firstCard = new RoundPlayerCard {
                    RoundPlayerId = roundPlayers[i].Id, CardId = shuffledCards[i]
                };
                var secondCard = new RoundPlayerCard {
                    RoundPlayerId = roundPlayers[i].Id, CardId = shuffledCards[i + roundPlayers.Count]
                };
                roundPlayerCards.AddRange(new[] { firstCard, secondCard });
            }
            _roundPlayerCardRepository.Add(roundPlayerCards);
        }
示例#8
0
        private List <RoundPlayerCard> DoPlayBot(RoundPlayer roundPlayer, List <long> shuffledCards)
        {
            if (roundPlayer.Player.Type == PlayerType.User)
            {
                return(Enumerable.Empty <RoundPlayerCard>().ToList());
            }
            var roundCards    = new List <RoundPlayerCard>();
            int gotCardsCount = 0;
            int score         = CalculateCardScore(roundPlayer.Cards.Select(roundPlayerCard => roundPlayerCard.Card));

            while (score < Constants.DealerStopValue)
            {
                Card card      = GetCardById(shuffledCards[gotCardsCount]);
                var  roundCard = new RoundPlayerCard {
                    CardId = card.Id, RoundPlayerId = roundPlayer.Id
                };
                gotCardsCount++;
                roundCards.Add(roundCard);
                roundPlayer.Cards.Add(roundCard);
                score = CalculateCardScore(roundPlayer.Cards.Select(roundPlayerCard => GetCardById(roundPlayerCard.CardId)));
            }
            return(roundCards);
        }