예제 #1
0
 public void SetCard(CardsSuit suit, CardNumbers number, Sprite front)
 {
     Suit   = suit;
     Number = number;
     Front  = front;
     Restart();
     img.sprite = front;
 }
예제 #2
0
 public Card GetCard(CardsSuit suit, CardNumbers number)
 {
     foreach (Card card in GetCards(suit))
     {
         if (card.Suit == suit && card.Number == number)
         {
             return(card);
         }
     }
     return(new Card(CardsSuit.None, CardNumbers.None));
 }
예제 #3
0
 public void AddMatchSuit(CardsSuit suit)
 {
     CreateMatchSuitList();
     if (GameSuits.Contains(suit))
     {
         GameSuits.Remove(suit);
     }
     else if (GameSuits.Count < (int)GameMode)
     {
         GameSuits.Add(suit);
     }
 }
예제 #4
0
        public Card[] GetCards(CardsSuit suit)
        {
            List <Card> cards = new List <Card>();

            foreach (Card card in deck)
            {
                if (card.Suit == suit)
                {
                    cards.Add(card);
                }
            }
            return(cards.ToArray());
        }
예제 #5
0
        public static Card[] GetCards(Card[] cards, CardsSuit suit)
        {
            List <Card> _cards = new List <Card>();

            foreach (Card card in cards)
            {
                if (card.Suit == suit)
                {
                    _cards.Add(card);
                }
            }
            return(_cards.ToArray());
        }
예제 #6
0
        public void ShuffleCards()
        {
            if (deck == null || deck.CardPrefab == null)
            {
                return;
            }
            if (cards_on_board == null)
            {
                CreateBoard();
            }

            GameVariables GV = MemoramaManager.Instance.GameVariables;

            int totalPairs = GameVariables.RequiredCardsToFlip;
            List <Vector2_Int> occupiedPosition = new List <Vector2_Int>();
            Vector2_Int        position         = Vector2_Int.zero;

            Card[] cards_to_play = deck.GetCards(GV.GameSuits.ToArray());
            Card[] cards_to_check;
            short  half_pairs = (short)(totalPairs / 2);

            for (int pairs = 0; pairs < totalPairs; ++pairs)
            {
                for (int suit = 0; suit < (int)GV.GameMode; ++suit)
                {
                    cards_to_check = Deck.GetCards(cards_to_play, GV.GameSuits[suit]);

                    for (int number = 0; number < (int)CardNumbers.counter; ++number)
                    {
                        if (pairs < half_pairs)
                        {
                            position = GetCardPosition(occupiedPosition, true);
                        }
                        else
                        {
                            position = GetCardPosition(occupiedPosition, false);
                        }

                        occupiedPosition.Add(position);
                        CardsSuit c_suit = GV.GameSuits[suit];
                        cards_on_board[position.x, position.y].SetCard(c_suit, (CardNumbers)number, Deck.GetCard(cards_to_check, (CardNumbers)number).Front);
                    }
                }
            }
        }
예제 #7
0
 public Card(CardsSuit suit, CardNumbers number, Sprite front = null)
 {
     Suit   = suit;
     Number = number;
     Front  = front;
 }