Exemple #1
0
 private void DiscardCardFromHand(Cards.Card p)
 {
     if (!humanDiscard && humanDraw)
     {
         HumanCards.Remove(p);
         Discards.Add(p);
         removePossibleCard(p);
         humanDiscard = true;
         startGame    = true;
         playerTurn   = false;
     }
     else
     {
         if (!startGame)
         {
             RaiseNotification("You must draw a card first", "Invalid Action");
         }
         else
         {
             if (!playerTurn)
             {
                 RaiseNotification("You already discard a card", "Invalid Action");
             }
             else
             {
                 RaiseNotification("You must draw a card first", "Invalid Action");
             }
         }
     }
 }
Exemple #2
0
        private void InternalOnPlay(Cards.Card card)
        {
            OnPlay(card);

            RegistrationSet.hand.CardPlayed -= this.InternalOnPlay;
            RemoveSelf();
        }
Exemple #3
0
 //Function to remove possible card after it is seen by computer
 private void removePossibleCard(Cards.Card p)
 {
     if (PossibleDeck.Contains(p))
     {
         PossibleDeck.Remove(p);
     }
 }
Exemple #4
0
        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);
        }
Exemple #5
0
 private void TakeCardFromDiscardPile(Cards.Card p)
 {
     if (humanTurn)
     {
         Discards.Remove(p);
         HumanCards.Add(p);
     }
 }
Exemple #6
0
 private void TakeCardFromDeck(Cards.Card card)
 {
     if (humanTurn)
     {
         RemainingDeck.Remove(card);
         HumanCards.Add(card);
     }
 }
Exemple #7
0
 /// <summary>
 /// Called at the start of the game to make each player's hand 5 cards.
 /// </summary>
 internal void draw5Cards()
 {
     for (int i = 0; i < 5; i++)
     {
         Cards.Card cardOnTopOfDeck = MainDeck.drawTopCard();
         Hand.Add(cardOnTopOfDeck);
         MeReadOnly.NumberOfCardsInHand = MeReadOnly.NumberOfCardsInHand + 1;
     }
 }
Exemple #8
0
 private void DiscardCardFromHand(Cards.Card p)
 {
     if (HumanCards.Count > 10 && humanTurn)
     {
         HumanCards.Remove(p);
         Discards.Add(p);
         humanTurn = false;
     }
 }
 private void TakeCardFromDeck(Cards.Card card)
 {
     if (!takenFromDeckOrDiscardPile)  // Human goes first
     {
         RemainingDeck.Remove(card);
         HumanCards.Add(card);
         takenFromDeckOrDiscardPile = true;
         canNowDiscard = true;
     }
 }
 private void TakeCardFromDiscardPile(Cards.Card p)
 {
     if (!takenFromDeckOrDiscardPile)
     {
         Discards.Remove(p);
         HumanCards.Add(p);
         takenFromDeckOrDiscardPile = true;
         canNowDiscard = true;
     }
 }
Exemple #11
0
        private void ComputerPlayerTurn()
        {
            Cards.Card card = DrawTopCardFromDeck();
            ComputerCards.Add(card);
            ComputerCards.Remove(card);

            Discards.Add(card);
            computerStage = false;
            pickUpStage   = true;
        }
Exemple #12
0
        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();
                    }
                }
            }
        }
        private void DiscardCardFromHand(Cards.Card p)
        {
            if (canNowDiscard)
            {
                HumanCards.Remove(p);
                Discards.Add(p);

                canNowDiscard = false;
                computerSeen.Remove(p);
                ArtificialPlayer();
            }
        }
Exemple #14
0
 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");
     }
 }
Exemple #15
0
 private void TakeCardFromDiscardPile(Cards.Card p)
 {
     if (!humanDraw)
     {
         Discards.Remove(p);
         HumanCards.Add(p);
         humanDraw = true;
     }
     else
     {
         RaiseNotification("You already take a card", "Invalid Action");
     }
 }
Exemple #16
0
 private void TakeCardFromDiscardPile(Cards.Card p)
 {
     if (pickUpStage)
     {
         Discards.Remove(p);
         HumanCards.Add(p);
         pickUpStage  = false;
         discardStage = true;
     }
     else
     {
         RaiseNotification("Not in Pick-Up Stage", "Title");
     }
 }
Exemple #17
0
 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");
     }
 }
Exemple #18
0
 private void DiscardCardFromHand(Cards.Card p)
 {
     if (discardStage)
     {
         HumanCards.Remove(p);
         Discards.Add(p);
         discardStage  = false;
         computerStage = true;
         ComputerPlayerTurn();
     }
     else
     {
         RaiseNotification("Not in Discard Stage", "Title");
     }
 }
Exemple #19
0
        public void TestAce()
        {
            Cards.Card card  = new Cards.Card();
            Cards.Deck deck  = new Cards.Deck();
            Hand       hand  = new Hand();
            string     name  = "";
            int        count = 0;

            card.face = Cards.Face.Ace;
            hand.Play(name, count);
            Assert.AreEqual(8, deck.DrawCard());
            Assert.AreEqual(1, deck.DrawCard());
            Assert.AreEqual(1, card.face);
            Assert.AreEqual(8, card.face);
            Assert.AreEqual(10, deck.DrawCard());
        }
Exemple #20
0
        private void ComputerDiscardCardFromHand()
        {
            if (humanDiscard)
            {
                ComputerPlayer.Move move    = ComputerPlayer.ComputerMove(ComputerCards).Item1;
                Cards.Card          discard = ComputerPlayer.ComputerMove(ComputerCards).Item2.Value;
                Discards.Add(discard);
                ComputerCards.Remove(discard);
                humanDiscard = false;
                playerTurn   = true;

                if (move == ComputerPlayer.Move.Gin)
                {
                    endGame();
                }
                else if (move == ComputerPlayer.Move.Knock)
                {
                    endGame();
                }
            }
        }
Exemple #21
0
        internal void Add(Cards.Card card)
        {
            _Cards.Insert(0, card);
            this.Sort();

            if (_AsynchronousChanging)
            {
                if (_AsynchronousPileChangedEventArgs == null)
                {
                    _AsynchronousPileChangedEventArgs = new PileChangedEventArgs(null, PileChangedEventArgs.Operation.Added, card);
                }
                else
                {
                    _AsynchronousPileChangedEventArgs.AddedCards.Add(card);
                }
            }
            else if (PileChanged != null)
            {
                PileChangedEventArgs pcea = new PileChangedEventArgs(null, PileChangedEventArgs.Operation.Added, card);
                PileChanged(this, pcea);
            }
        }
Exemple #22
0
 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();
         }
     }
 }
Exemple #23
0
 /// <summary>
 /// Returns the top card and discards it from the deck.
 /// </summary>
 /// <returns></returns>
 internal Cards.Card drawTopCard()
 {
     Cards.Card toReturn = CardsInDeck[0];
     CardsInDeck.RemoveAt(0);
     return(toReturn);
 }
Exemple #24
0
		public GamePlayMessage(WaitCallback waitCallback, Player player, Cards.Card card)
			: base(waitCallback)
		{
			Player = player;
			Card = card;
		}
Exemple #25
0
		public GameMessageEventArgs(Player player, Cards.Card sourceCard)
		{
			this.Player = player;
			this.SourceCard = sourceCard;
		}
Exemple #26
0
 /// <summary>
 /// Called Each Turn to add One card to the hand.
 /// </summary>
 internal void drawCard()
 {
     Cards.Card cardOnTopOfDeck = MainDeck.drawTopCard();
     Hand.Add(cardOnTopOfDeck as Cards.Card);
     MeReadOnly.NumberOfCardsInHand = MeReadOnly.NumberOfCardsInHand + 1;
 }
Exemple #27
0
 protected override void HandleHtmlCodeForProvider(Cards.Card card, string htmlCode)
 {
     throw new NotImplementedException();
 }
Exemple #28
0
 public abstract void OnPlay(Cards.Card card);
Exemple #29
0
 static string ToString(Cards.Card card)
 {
     return(ToString(card.rank) + ToString(card.suit));
 }
Exemple #30
0
 private void DiscardCardFromHand(Cards.Card p)
 {
     HumanCards.Remove(p);
     Discards.Add(p);
 }
Exemple #31
0
 protected override string AssembleURL(Cards.Card card)
 {
     throw new NotImplementedException();
 }