예제 #1
0
파일: HandTests.cs 프로젝트: sderen/tcg
        public void Test_RemoveCardAtIndex_Removes_Right_Card_From_Hand()
        {
            var hand = new Hand();

            hand.AddCardToHand(1);
            hand.AddCardToHand(3);
            hand.RemoveCardAtIndex(0);
            Assert.Single(hand.CardsInHand);
            Assert.Equal(3, hand.CardsInHand.First());
        }
예제 #2
0
        public void BlackjackTest()
        {
            Hand testHand    = new Hand();
            Card aceOfSpades = new Card(0, 1);

            testHand.AddCardToHand(aceOfSpades);
            Card kingOfSpades = new Card(0, 13);

            testHand.AddCardToHand(kingOfSpades);
            Assert.AreEqual(21, testHand.Value);
        }
예제 #3
0
        public void CountTestTwoCards(CardValue cardOne, CardValue cardTwo, int result)
        {
            var hand = new Hand(0);

            hand.AddCardToHand(new Card {
                CardValue = cardOne, Suit = Suit.Clubs
            });
            hand.AddCardToHand(new Card {
                CardValue = cardTwo, Suit = Suit.Diamonds
            });
            hand.Score.Should().Be(result);
        }
예제 #4
0
        public void HandValueTest()
        {
            Hand testHand    = new Hand();
            Card tenOfSpades = new Card(0, 10);

            testHand.AddCardToHand(tenOfSpades);
            Card threeOfClubs = new Card(3, 3);

            testHand.AddCardToHand(threeOfClubs);
            Card sevenOfDiamonds = new Card(2, 7);

            testHand.AddCardToHand(sevenOfDiamonds);
            Assert.AreEqual(20, testHand.Value);
        }
예제 #5
0
        public bool Play(Shoe currentShoe, Hand currentHand, List <Hand> hands)
        {
            var splitOffCard = currentHand.Cards[0];

            var newHand = new Hand();

            newHand.AddCardToHand(splitOffCard);
            newHand.AddCardToHand(currentShoe.DealCard());
            newHand.Bet = currentHand.Bet;
            hands.Add(newHand);

            currentHand.Cards.Remove(splitOffCard);
            currentHand.AddCardToHand(currentShoe.DealCard());
            return(false);
        }
예제 #6
0
        public void AddCardToHandTest()
        {
            Hand testHand = new Hand();
            Card testCard = new Card(0, 10); // Ten of Spades

            testHand.AddCardToHand(testCard);
            Assert.AreEqual(10, testHand.Value);
        }
예제 #7
0
 public void AddCardToHand(Card card)
 {
     card.CardPrefabInst.transform.position =
         new Vector3(
             card.CardPrefabInst.transform.position.x + (hand.CardCount() * 1.51f),
             card.CardPrefabInst.transform.position.y,
             card.CardPrefabInst.transform.position.z);
     hand.AddCardToHand(card);
 }
예제 #8
0
 public void KeepHand()
 {
     foreach (GameObject panel in PanelsList)
     {
         if (panel)
         {
             StartHandPanel handPanel = panel.GetComponent <StartHandPanel> ();
             if (handPanel.Card != null)
             {
                 handPanel.Card.GetComponent <CardInteraction> ().SetCardInterationsEnable(true);
                 HandComponent.AddCardToHand(handPanel.Card);
             }
         }
         Destroy(panel);
     }
     //HandCanvas.enabled = false;
     KeepHandButton.interactable = false;
     GamePlayComponent.KeepStartHand();
 }
    public void DrawCard()
    {
        if (playerHand.MaximumHandIsReached())
        {
            //Debug.Log("Max hand reached");
        }

        if (playerDeck.DeckIsEmpty())
        {
            playerDeck.ShuffleDiscardsExceptPlayed(playerHand.cardsInHand, cardsPlayed);
            discardedCards.Clear();
            discardCountDisplay.text = discardedCards.Count.ToString();
        }

        Card drawnCard = playerDeck.DrawNextCard();

        playerHand.AddCardToHand(drawnCard);
        playerHand.ShowHandCards();
    }
예제 #10
0
파일: HandTests.cs 프로젝트: sderen/tcg
        public void Test_Hand_Can_Grow_Up_To_Five_Cards_And_Returns_Right_Card_List_Back()
        {
            var hand = new Hand();

            for (byte i = 0; i < 5; i++)
            {
                Assert.True(hand.AddCardToHand(i));
                var cards = hand.CardsInHand.ToArray();
                Assert.Equal(i + 1, cards.Length);
                for (byte j = 0; j <= i; j++)
                {
                    Assert.Equal(j, j);
                }
            }

            Assert.False(hand.AddCardToHand(99));
            Assert.Equal(5, hand.CardsInHand.Count);
            Assert.False(hand.CardsInHand.Contains((byte)99));
        }
예제 #11
0
    private Card DrawCard()
    {
        Card drawnCard = _playerDeck.DrawCard();

        if (drawnCard != null)
        {
            _playerHand.AddCardToHand(drawnCard);
            return(drawnCard);
        }
        return(null);
    }
예제 #12
0
파일: PlayerState.cs 프로젝트: sderen/tcg
        //TODO: think about multithreading in general
        private void DrawCard()
        {
            var card = _deck.DrawCard();

            if (card == null)
            {
                DamagePlayer(1);
                return;
            }

            _hand.AddCardToHand(card.Value); //TODO: do i need return value anywhere
        }
예제 #13
0
        public void CardsInHandTest()
        {
            Hand testHand    = new Hand();
            Card tenOfSpades = new Card(0, 10);

            testHand.AddCardToHand(tenOfSpades);
            Card threeOfClubs = new Card(3, 3);

            testHand.AddCardToHand(threeOfClubs);
            Card sevenOfDiamonds = new Card(2, 7);

            testHand.AddCardToHand(sevenOfDiamonds);
            Assert.AreEqual(tenOfSpades, testHand[0]);
            Assert.AreEqual(threeOfClubs, testHand[1]);
            Assert.AreEqual(sevenOfDiamonds, testHand[2]);
            // Testing IEnumerable implementation
            foreach (Card c in testHand)
            {
                Console.WriteLine(c.ToString());
            }
        }
예제 #14
0
 //Check if the card is within the table range, if not, return it back to the hand
 private void CheckPosition()
 {
     if (transform.position.x > -6 && transform.position.x < 6 && transform.position.y > -3 && transform.position.y < 3)
     {
         cardState = CardState.Played;
     }
     else
     {
         hand.AddCardToHand(gameObject);
         moveTo  += new Vector3(0, 0, -5);
         oldspeed = 50f;
     }
 }
예제 #15
0
    //Deal a card
    void Deal()
    {
        //create a card
        var newCard = Instantiate(cardPrefab, transform.position + new Vector3(0, 0, -1), Quaternion.identity);
        var cCard   = newCard.GetComponent <Card>();

        cCard.number   = deck[0];
        cCard.oldspeed = 10f;
        cCard.hand     = hand;
        cCard.SetSuitAndRank(deck[0]);
        newCard.GetComponent <SpriteRenderer>().sprite = cardFaces[deck[0] - 1];
        hand.AddCardToHand(newCard);
        deck.RemoveAt(0);
        increment -= 0.01f;
    }
예제 #16
0
        /// <summary>
        /// Draws a card from the deck.
        /// </summary>
        /// <returns><c>true</c>, if card was drawn, <c>false</c> otherwise.</returns>
        public virtual bool DrawCard()
        {
            if (Hand == null)
            {
                throw new InvalidOperationException("Hand cannot be null");
            }

            // Draw a card (if available) and apply draw effect
            BaseCard drawnCard = Deck.DrawCard();

            if (drawnCard == null)
            {
                // Can't draw any more cards
                return(false);
            }

            Logger.Log("Player " + this + " has drawn card " + drawnCard);
            Hand.AddCardToHand(drawnCard);

            return(true);
        }
예제 #17
0
파일: BuyCard.cs 프로젝트: 7aylor/Unity
    /// <summary>
    /// Finds the hand based off of the tag, then adds to the respective hand. Updates gold amount and shifts market cards
    /// </summary>
    /// <param name="handTag">Tag of the hand you want to add card to</param>
    private void HandleHand(string handTag, int costOfCard, GameObject cardToAdd)
    {
        //find the hand with the given tag
        GameObject handObj = GameObject.FindGameObjectWithTag(handTag);

        if (handObj != null)
        {
            Hand hand = handObj.GetComponent <Hand>();

            //if the hand is not full, add card to hand, shift market cards, update gold
            if (hand != null && hand.IsFull() == false)
            {
                hand.AddCardToHand(cardToAdd.GetComponent <Image>());
                //passiveHand.HandleCard(cardToAdd);
                GoldManager.instance.SetGoldAmount(GoldManager.instance.GetGoldAmount() - costOfCard);
                apm.UseActionPoint();

                Console.instance.WriteToConsole("Bought " + cardToAdd.GetComponent <Image>().sprite.name);

                if (costOfCard != costOfDeckCard)
                {
                    market.ShiftCardsForward(gameObject);
                }
            }
            else if (hand.IsFull() == true)
            {
                //tell player the hand is full
                Console.instance.WriteToConsole(hand.name + " is full.");
            }
        }
        //if no tag is found, throw exception
        else
        {
            string exceptionString = String.Format("No {0} found. Ensure the {0} object has the proper tag", handTag);
            throw new System.Exception(exceptionString);
        }
    }
예제 #18
0
 public bool Play(Shoe currentShoe, Hand currentHand, List <Hand> hands)
 {
     currentHand.AddCardToHand(currentShoe.DealCard());
     return(false);
 }
예제 #19
0
 public bool Play(Shoe currentShoe, Hand currentHand, List <Hand> hands)
 {
     currentHand.AddCardToHand(currentShoe.DealCard());
     currentHand.Bet *= 2;
     return(true);
 }