コード例 #1
0
        /*
         *
         * private async void ComputerDeck()
         * {
         *  var deck = Cards.FullDeck;
         *  foreach (var card in deck)
         *  {
         *
         *
         *  }
         * }
         */


        private Cards.Card DrawTopCardFromDeck()
        {
            var top = RemainingDeck[RemainingDeck.Count - 1];

            RemainingDeck.Remove(top);
            return(top);
        }
コード例 #2
0
        private async void Deal()
        {
            ComputerThoughts = "You dare challenge I? I can calculate more moves in a second than you can possibly imagine!";

            if (dealFinishied)
            {
                dealFinishied = false;
                var deck = Cards.Shuffle(Cards.FullDeck);

                foreach (var card in deck)
                {
                    RemainingDeck.Add(card);
                    await Task.Delay(1);
                }

                for (int i = 0; i < 10; i++)
                {
                    ComputerCards.Add(DrawTopCardFromDeck());
                    await Task.Delay(30);

                    HumanCards.Add(DrawTopCardFromDeck());
                    await Task.Delay(30);
                }

                Discards.Add(DrawTopCardFromDeck());
                dealFinishied = true;
            }
        }
コード例 #3
0
ファイル: ViewModel.cs プロジェクト: teekenl/Gin-Rummies-F-
        private async void Deal()
        {
            var deck = Cards.Shuffle(Cards.FullDeck);

            foreach (var card in deck)
            {
                PossibleDeck.Add(card); // Possible list of card
                RemainingDeck.Add(card);
                await Task.Delay(1);
            }

            for (int i = 0; i < 10; i++)
            {
                Cards.Card computerCard = DrawTopCardFromDeck();
                ComputerCards.Add(computerCard);
                // Remove the list of card on computer hand, as it is seen
                removePossibleCard(computerCard);
                await Task.Delay(30);

                HumanCards.Add(DrawTopCardFromDeck());
                await Task.Delay(30);
            }

            Discards.Add(DrawTopCardFromDeck());
            // Remove the discard from possible deck
            removePossibleCard(Discards[Discards.Count - 1]);
            ScoreToWin = "Score To Win : " + winingScore.ToString();
            scoreLabel(firstWinnerScore, secondWinnerScore);
        }
コード例 #4
0
ファイル: ViewModel.cs プロジェクト: JabbaTheGIT/GinRummy
 private void CleanUpCards()
 {
     HumanCards.Clear();
     ComputerCards.Clear();
     RemainingDeck.Clear();
     Discards.Clear();
     Deal();
 }
コード例 #5
0
ファイル: ViewModel.cs プロジェクト: JabbaTheGIT/GinRummy
 private void TakeCardFromDeck(Cards.Card card)
 {
     if (humanTurn)
     {
         RemainingDeck.Remove(card);
         HumanCards.Add(card);
     }
 }
コード例 #6
0
 private void TakeCardFromDeck(Cards.Card card)
 {
     if (!takenFromDeckOrDiscardPile)  // Human goes first
     {
         RemainingDeck.Remove(card);
         HumanCards.Add(card);
         takenFromDeckOrDiscardPile = true;
         canNowDiscard = true;
     }
 }
コード例 #7
0
ファイル: ViewModel.cs プロジェクト: JabbaTheGIT/GinRummy
        private void ComputerTurn()
        {
            var takeDiscard = ComputerPlayer.ComputerPickupDiscard(ComputerCards, Discards[Discards.Count - 1], RemainingDeck);

            if (takeDiscard)
            {
                var discardCard = Discards[Discards.Count - 1];
                Discards.Remove(discardCard);
                ComputerCards.Add(discardCard);
            }
            else
            {
                Cards.Card remainingDeckCards = RemainingDeck[RemainingDeck.Count - 1];
                RemainingDeck.Remove(remainingDeckCards);
                ComputerCards.Add(remainingDeckCards);
            }

            var compMove = ComputerPlayer.ComputerMove(ComputerCards);

            ComputerCards.Remove(compMove.Item2.Value);
            Discards.Add(compMove.Item2.Value);

            var scores = GinRummy.Score(ComputerCards, HumanCards);

            if (compMove.Item1.IsGin)
            {
                compScore += scores;
                if (humanScore < 100 && compScore < 100)
                {
                    RaiseNotification("Human Score: " + humanScore + ". Computer Score: " + compScore, "Scores So Far");
                    CleanUpCards();
                }
            }
            else if (compMove.Item1.IsKnock)
            {
                if (scores > 0)
                {
                    compScore += scores;
                    if (humanScore < 100 && compScore < 100)
                    {
                        RaiseNotification("Human Score: " + humanScore + ". Computer Score: " + compScore, "Scores So Far");
                        CleanUpCards();
                    }
                }
                else
                {
                    humanScore += Math.Abs(scores);
                    if (humanScore < 100 && compScore < 100)
                    {
                        RaiseNotification("Human Score: " + humanScore + ". Computer Score: " + compScore, "Scores So Far");
                        CleanUpCards();
                    }
                }
            }
        }
コード例 #8
0
 private void nextRound()
 {
     CheckForEndGame();
     takenFromDeckOrDiscardPile = false;
     canNowDiscard = false;
     HumanCards.Clear();
     ComputerCards.Clear();
     RemainingDeck.Clear();
     Discards.Clear();
     Deal();
 }
コード例 #9
0
ファイル: ViewModel.cs プロジェクト: teekenl/Gin-Rummies-F-
 private void TakeCardFromDeck(Cards.Card card)
 {
     if (!humanDraw)
     {
         RemainingDeck.Remove(card);
         HumanCards.Add(card);
         humanDraw = true;
     }
     else
     {
         RaiseNotification("You already take a card", "Invalid Action");
     }
 }
コード例 #10
0
ファイル: ViewModel.cs プロジェクト: Matt-Leith/GinRummy
 private void TakeCardFromDeck(Cards.Card card)
 {
     if (pickUpStage)
     {
         RemainingDeck.Remove(card);
         HumanCards.Add(card);
         pickUpStage  = false;
         discardStage = true;
     }
     else
     {
         RaiseNotification("Not in Pick-Up Stage", "Title");
     }
 }
コード例 #11
0
ファイル: ViewModel.cs プロジェクト: teekenl/Gin-Rummies-F-
        // Function to reset the game for next rounds
        // The game will continue if none of player has exceeded
        // maximum score to win
        private void resetGame()
        {
            Discards.Clear();
            HumanCards.Clear();
            ComputerCards.Clear();
            RemainingDeck.Clear();
            PossibleDeck.Clear();
            startGame    = false;
            playerTurn   = true;
            humanDraw    = false;
            humanDiscard = false;

            if (firstWinnerScore >= winingScore || secondWinnerScore >= winingScore)
            {
                scoreReset();
            }
            Deal();
        }
コード例 #12
0
        private async void Deal()
        {
            var deck = Cards.Shuffle(Cards.FullDeck);

            foreach (var card in deck)
            {
                RemainingDeck.Add(card);
                await Task.Delay(1);
            }

            for (int i = 0; i < 10; i++)
            {
                ComputerCards.Add(DrawTopCardFromDeck());
                await Task.Delay(30);

                HumanCards.Add(DrawTopCardFromDeck());
                await Task.Delay(30);
            }

            Discards.Add(DrawTopCardFromDeck());
        }
コード例 #13
0
ファイル: ViewModel.cs プロジェクト: teekenl/Gin-Rummies-F-
 private void ComputerTakeCardFromDiscardPile()
 {
     Cards.Card topDiscard = Discards[Discards.Count - 1];
     if (humanDraw)
     {
         bool computerPickUp = ComputerPlayer.ComputerPickupDiscard(ComputerCards, topDiscard, PossibleDeck);
         if (computerPickUp)
         {
             ComputerCards.Add(topDiscard);
             Discards.Remove(topDiscard);
             humanDraw = false;
             ComputerDiscardCardFromHand();
         }
         else
         {
             var topHiddenCard = RemainingDeck[RemainingDeck.Count - 1];
             ComputerCards.Add(topHiddenCard);
             PossibleDeck.Remove(topHiddenCard);
             RemainingDeck.Remove(topHiddenCard);
             humanDraw = false;
             ComputerDiscardCardFromHand();
         }
     }
 }