Exemplo n.º 1
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);
                    }
                }
            }
        }
Exemplo n.º 2
0
        private Vector2_Int GetManualPosition(List <Vector2_Int> occupied)
        {
            Vector2_Int position = Vector2_Int.one * -1;

            for (int column = 0; column < columns; ++column)
            {
                for (int row = 0; row < rows; ++row)
                {
                    position.x = column;
                    position.y = row;
                    if (!occupied.Contains(position))
                    {
                        return(position);
                    }
                }
            }
            return(position);
        }
Exemplo n.º 3
0
        private Vector2_Int GetCardPosition(List <Vector2_Int> occupied, bool random = true)
        {
            Vector2_Int position = Vector2_Int.zero;

            if (random)
            {
                for (int i = 0; i < 100; ++i)
                {
                    position.x = Random.Range(0, columns);
                    position.y = Random.Range(0, rows);
                    if (!occupied.Contains(position))
                    {
                        return(position);
                    }
                }
            }
            return(GetManualPosition(occupied));
        }