Пример #1
0
        public void PlayerPlay(Card c, Suit selectedUserSuit)
        {
            if (GameIsPlaying)
            {
                ResetMessage();
                Card topCardOnTable   = HandTable[HandTable.CountCardsInHand - 1];
                Card selectedUserCard = c;

                if (IsRegularCard(selectedUserCard, topCardOnTable))
                {
                    HandTable.AddCard(c);
                    HandPlayer.RemoveCard(c);
                    PlayerActive = false;
                    IsWinner();
                }
                else if (IsWildCard(selectedUserCard))
                {
                    selectedUserCard.Suit = selectedUserSuit;
                    HandTable.AddCard(selectedUserCard);
                    HandPlayer.RemoveCard(HandPlayer.GetCardIndex(selectedUserCard));
                    PlayerActive = false;
                    IsWinner();
                }
                else
                {
                    Messages     = $"You cannot play the {selectedUserCard.FaceValue} of {selectedUserCard.Suit} now";
                    PlayerActive = true;
                }
            }
        }
Пример #2
0
        static void Main(string[] args)
        {
            //init
            var gameState         = new GameState();
            var cardRenderer      = new CardRenderer();
            var inputHelper       = new InputHelper();
            var suitRenderer      = new SuitRenderer();
            var firstRoundBidder  = new FirstRoundBidder();
            var secondRoundBidder = new SecondRoundBidder();
            var handPlayer        = new HandPlayer();

            var game = new EuchreGame(
                gameState,
                firstRoundBidder,
                secondRoundBidder,
                handPlayer,
                cardRenderer,
                inputHelper,
                suitRenderer
                );

            game.Play();
        }
Пример #3
0
 public void AddCardUserClicked()
 {
     ResetMessage();
     if (Deck.DeckCount > 0 && GameIsPlaying)
     {
         if (HandPlayer.CountCardsInHand <= 11)
         {
             Card card = Deck.DrawOneCard();
             HandPlayer.AddCard(card);
         }
         else
         {
             Messages = "You cannot have more than 12 cards. \n You should play or pass your turn";
             return;
         }
     }
     else
     {
         if (GameIsPlaying)
         {
             RedealFromPile();
         }
     }
 }
Пример #4
0
        private void InsertInFastMode(HashSet <string> statisticFiles, Dictionary <HandHistoryKey, int> hands, SQLiteConnection conn)
        {
            LogProvider.Log.Info("Data will be proccessed in fast mode.");

            var handsPlayers = new ConcurrentStack <HandPlayer>();

            var counter = 0;

            LogProvider.Log.Info($"Begin the reading of statistic: {statisticFiles.Count} files to read.");

            Parallel.ForEach(statisticFiles, file =>
            {
                playerStatisticRepository.GetPlayerStatisticFromFile(file).Where(stat => !stat.IsTourney).ForEach(stat =>
                {
                    var handKey = new HandHistoryKey(stat.GameNumber, (short)stat.PokersiteId);

                    if (hands.ContainsKey(handKey))
                    {
                        var handPlayer = new HandPlayer
                        {
                            PlayerId = stat.PlayerId,
                            HandId   = hands[handKey],
                            NetWon   = Utils.ConvertToCents(stat.NetWon)
                        };

                        handsPlayers.Push(handPlayer);

                        if (counter % 100 == 0)
                        {
                            MigrationUtils.SetStatusMessage($"Reading statistic {counter}/{statisticFiles.Count}");
                        }
                    }
                });

                Interlocked.Increment(ref counter);
            });

            counter = 0;

            LogProvider.Log.Info($"Begin data inserting : {handsPlayers.Count} rows to insert.");

            using (var cmd = new SQLiteCommand("insert into HandsPlayers (HandId, PlayerId, NetWon) values (@HandId, @PlayerId, @NetWon)", conn))
            {
                cmd.Parameters.Add("@HandId", DbType.Int32);
                cmd.Parameters.Add("@PlayerId", DbType.Int32);
                cmd.Parameters.Add("@NetWon", DbType.Int64);

                cmd.Prepare();

                using (var transaction = conn.BeginTransaction())
                {
                    foreach (var hand in handsPlayers)
                    {
                        if (counter % 25000 == 0)
                        {
                            MigrationUtils.SetStatusMessage($"Inserting data {counter}/{handsPlayers.Count}");
                        }

                        cmd.Parameters[0].Value = hand.HandId;
                        cmd.Parameters[1].Value = hand.PlayerId;
                        cmd.Parameters[2].Value = hand.NetWon;
                        cmd.ExecuteNonQuery();

                        counter++;
                    }

                    transaction.Commit();
                }
            }
        }
Пример #5
0
        private void InsertInLowMemoryMode(HashSet <string> statisticFiles, Dictionary <HandHistoryKey, int> hands, SQLiteConnection conn)
        {
            LogProvider.Log.Info("Data will be proccessed in low memory mode.");

            var insertedRows = 0;

            LogProvider.Log.Info($"Begin data processing: {statisticFiles.Count} files for processing.");

            using (var transaction = conn.BeginTransaction())
            {
                using (var cmd = new SQLiteCommand("insert into HandsPlayers (HandId, PlayerId, NetWon) values (@HandId, @PlayerId, @NetWon)", conn))
                {
                    var counter = 0;

                    Parallel.ForEach(statisticFiles, file =>
                    {
                        playerStatisticRepository.GetPlayerStatisticFromFile(file).Where(stat => !stat.IsTourney).ForEach(stat =>
                        {
                            var handKey = new HandHistoryKey(stat.GameNumber, (short)stat.PokersiteId);

                            if (hands.ContainsKey(handKey))
                            {
                                lock (locker)
                                {
                                    var handPlayer = new HandPlayer
                                    {
                                        PlayerId = stat.PlayerId,
                                        HandId   = hands[handKey],
                                        NetWon   = Utils.ConvertToCents(stat.NetWon)
                                    };

                                    cmd.Parameters.Add("@HandId", DbType.Int32);
                                    cmd.Parameters.Add("@PlayerId", DbType.Int32);
                                    cmd.Parameters.Add("@NetWon", DbType.Int64);

                                    cmd.Prepare();

                                    if (counter % 25 == 0)
                                    {
                                        MigrationUtils.SetStatusMessage($"Processing statistic {counter}/{statisticFiles.Count}");
                                    }

                                    cmd.Parameters[0].Value = handPlayer.HandId;
                                    cmd.Parameters[1].Value = handPlayer.PlayerId;
                                    cmd.Parameters[2].Value = handPlayer.NetWon;
                                    cmd.ExecuteNonQuery();

                                    insertedRows++;
                                }
                            }
                        });

                        Interlocked.Increment(ref counter);
                    });
                }

                LogProvider.Log.Info($"Inserted data: {insertedRows} rows");

                transaction.Commit();
            }
        }
Пример #6
0
 public void DrawPlayerHand()
 {
     HandPlayer.Add(_deck.Draw());
 }