//returns 1 for player 1 win and 2 for player 2 win. //returns -1 in case of an error public int ResolveGame() { while (!(player1.IsEmpty() || player2.IsEmpty())) { if (previousDecks1.Contains(player1.DeckAsString()) && previousDecks2.Contains(player2.DeckAsString())) { return(1); } else { previousDecks1.Add(player1.DeckAsString()); previousDecks2.Add(player2.DeckAsString()); } int card1 = player1.Draw(); int card2 = player2.Draw(); if (player1.CardCount() >= card1 && player2.CardCount() >= card2) { RecursiveGame subgame = new RecursiveGame(player1.SubGameDeck(card1), player2.SubGameDeck(card2)); if (subgame.ResolveGame() == 1) { player1.AddCard(card1); player1.AddCard(card2); } else if (subgame.ResolveGame() == 2) { player2.AddCard(card2); player2.AddCard(card1); } } else { if (card1 > card2) { player1.AddCard(card1); player1.AddCard(card2); } else if (card1 < card2) { player2.AddCard(card2); player2.AddCard(card1); } } } if (player1.IsEmpty()) { return(2); } else if (player2.IsEmpty()) { return(1); } else { return(-1); } }
public Day22(List <string> d) { List <int> temp = new List <int>(); foreach (string s in d) { if (s.StartsWith("Player")) { temp = new List <int>(); } else if (s == "") { player1 = new Deck(temp); } else { temp.Add(int.Parse(s)); } } player2 = new Deck(temp); game2 = new RecursiveGame(player1.SubGameDeck(player1.CardCount()), player2.SubGameDeck(player2.CardCount())); }