コード例 #1
0
        public void playGame2()
        {
            while (Player1.Count != 0 && Player2.Count != 0)
            {
                // If there is a previous round with the same cards in the same order for the same players, game ends in with for P1
                var roundidPlayer1 = calculateScore(Player1);
                var roundidPlayer2 = calculateScore(Player2);
                if (DeckMemoryPlayer1.Contains(roundidPlayer1) && DeckMemoryPlayer2.Contains(roundidPlayer2))
                {
                    GameWinner = Player1;
                    break;
                }
                DeckMemoryPlayer1.Add(roundidPlayer1);
                DeckMemoryPlayer2.Add(roundidPlayer2);

                playRoundGame2();
            }

            if (GameWinner == null)
            {
                if (Player1.Count != 0)
                {
                    GameWinner = Player1;
                }
                if (Player2.Count != 0)
                {
                    GameWinner = Player2;
                }
            }
        }
コード例 #2
0
        public void playRoundGame2()
        {
            // Play a recursive subgame if they have more cards than their card count
            if (Player1.Count > Player1[0] && Player2.Count > Player2[0])
            {
                // Save the current deck for when you return to the previous game
                int[] player1DeckForSafekeeping = Player1.ToArray();
                int[] player2DeckForSafekeeping = Player2.ToArray();
                SavedPlayer1Decks.Push(player1DeckForSafekeeping);
                SavedPlayer2Decks.Push(player2DeckForSafekeeping);

                // Ditto with the deck memory (deck memory is only in game, not between games)
                int[] player1DeckMemoryForSafeKeeping = DeckMemoryPlayer1.ToArray();
                int[] player2DeckMemoryForSafeKeeping = DeckMemoryPlayer2.ToArray();
                SavedPlayer1DeckMemory.Push(player1DeckMemoryForSafeKeeping);
                SavedPlayer2DeckMemory.Push(player2DeckMemoryForSafeKeeping);

                // Getting the new deck and new deck memory for the new game
                Player1 = Player1.GetRange(1, Player1[0]);
                Player2 = Player2.GetRange(1, Player2[0]);
                DeckMemoryPlayer1.Clear();
                DeckMemoryPlayer2.Clear();

                playGame2();

                if (GameWinner == Player1)
                {
                    // Has to be after to check gamewinner, but before you reorder things
                    Player1 = SavedPlayer1Decks.Pop().ToList();
                    Player2 = SavedPlayer2Decks.Pop().ToList();

                    player1WinsRound();
                }
                if (GameWinner == Player2)
                {
                    // Has to be after to check gamewinner, but before you reorder things
                    Player1 = SavedPlayer1Decks.Pop().ToList();
                    Player2 = SavedPlayer2Decks.Pop().ToList();

                    player2WinsRound();
                }

                //Tidy things up ready for the next go around
                DeckMemoryPlayer1 = SavedPlayer1DeckMemory.Pop().ToList();
                DeckMemoryPlayer2 = SavedPlayer2DeckMemory.Pop().ToList();
                GameWinner        = null;
            }
            else
            {
                if (Player1[0] > Player2[0])
                {
                    player1WinsRound();
                }
                else
                {
                    player2WinsRound();
                }
            }
        }