public BeehiveGame()
    {
        deck = new List<Card>();
        for (int i = 1; i <= 13; i++)
        {
            char c = map(i);
            deck.Add(new Card(Card.Suit.Club, c));
            deck.Add(new Card(Card.Suit.Spade, c));
            deck.Add(new Card(Card.Suit.Heart, c));
            deck.Add(new Card(Card.Suit.Diamond, c));
        }

        var shuffledcards = deck.OrderBy(a => Guid.NewGuid());
        deck = new List<Card>(shuffledcards);

        flowerStack1 = new SerializableStack<Card>();
        flowerStack2 = new SerializableStack<Card>();
        flowerStack3 = new SerializableStack<Card>();
        flowerStack4 = new SerializableStack<Card>();
        flowerStack5 = new SerializableStack<Card>();
        flowerStack6 = new SerializableStack<Card>();
        beehiveStack = new SerializableStack<Card>();
        workingPile = new SerializableStack<Card>();

        for (int i = 0; i < 10; i++)
        {
            beehiveStack.Push(deck.ElementAt(0));
            deck.RemoveAt(0);
        }
        for (int i = 0; i < 3; i++)
        {
            workingPile.Push(deck.ElementAt(0));
            deck.RemoveAt(0);
        }

        flowerStack1.Push(deck.ElementAt(0));
        deck.RemoveAt(0);
        flowerStack2.Push(deck.ElementAt(0));
        deck.RemoveAt(0);
        flowerStack3.Push(deck.ElementAt(0));
        deck.RemoveAt(0);
        flowerStack4.Push(deck.ElementAt(0));
        deck.RemoveAt(0);
        flowerStack5.Push(deck.ElementAt(0));
        deck.RemoveAt(0);
        flowerStack6.Push(deck.ElementAt(0));
        deck.RemoveAt(0);

        startTime = DateTime.Now.ToFileTime();
    }
Exemple #2
0
 internal void ClrAll()
 {
     this.stack = new SerializableStack();
 }
    public bool moveTopOfStackToFlower(SerializableStack<Card> source, int stack)
    {
        SerializableStack<Card> flowerStack = getFlowerStack(stack);
        if (source.Count() > 0)
        {
            char workingCardValue = source.Peek().getValue();
            if (flowerStack.Count() > 0)
            {
                d("move top " + stack + " src " + source.Peek() + " d " + flowerStack.Peek());
            }

            if (flowerStack.Count() == 0 || flowerStack.Peek().getValue() == workingCardValue)
            {
                Card toMove = source.Pop();
                flowerStack.Push(toMove);
                if (flowerStack.Count() >= 4)
                {
                    d("cleared flower stack: " + flowerStack.Peek().getValue());
                    flowerStack.Clear();
                }
                checkWinState();
                return true;
            }
        }
        return false;
    }