static void Main(string[] args) { // Lists to hold the game data List <Player> players = new List <Player>(); List <Game> games = new List <Game>(); List <Round> rounds = new List <Round>(); int choice;//this is be out variable choice of the player to 1 (play) or 2 (quit) Player computer = new Player() { Name = "Computer" }; //instantiate a Player and give a value to the Name all at once. players.Add(computer); //add the computer to List<Player> players int gameCounter = 1; //to keep track of how many games have been played so far in this compilation do //game loop { choice = RpsGameMethods.GetUsersIntent(); //get a choice from the user (play or quit) if (choice == 2) { break; } //if the user chose 2, break out of the game. System.Console.WriteLine($"\n\t\tThis is game #{gameCounter++}\n"); string playerName = RpsGameMethods.GetPlayerName();//get the player name. this is a place to make sure the user isn't using forbidden words or symbols Player p1 = RpsGameMethods.VerifyPlayer(players, playerName); Game game = RpsGameMethods.NewGameBetween(p1, computer); //play rounds till one player has 2 wins //assign the winner to the game and check that property to break out of the loop. while (game.winner.Name == "null") { Round round = new Round(); //declare a round for this iteration round.game = game; // add the game to this round round.player1 = p1; // add user (p1) to this round round.Computer = computer; // add computer to this round //get the choices for the 2 players //insert the players choices directly into the round round.p1Choice = RpsGameMethods.GetPlayer1Choice(); round.ComputerChoice = RpsGameMethods.GetRandomChoice(); RpsGameMethods.GetRoundWinner(round); //check the choices to see who won. game.rounds.Add(round); //add this round to the games List of rounds //search the game.rounds List<> to see if one player has 2 wins //if not loop to another round System.Console.WriteLine($"\tFor this Game so far:\n\t\tp1wins => {game.rounds.Count(x => x.Outcome == 1)} \n\t\tcomputer wins {game.rounds.Count(x => x.Outcome == 2)}"); int whoWon = RpsGameMethods.GetWinner(game); //assign the winner to the game and increment wins and losses for both RpsGameMethods.IncrementWinnerAndPrint(whoWon, game, p1, computer); }//end of rounds loop games.Add(game); } while (choice != 2);//end of game loop RpsGameMethods.PrintAllCurrentData(games, players, rounds); } //end of main