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; } } }
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(); } } }