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
        static void Main(string[] args)
        {
            List <Player> players = new List <Player>();
            List <Game>   games   = new List <Game>();
            List <Round>  rounds  = new List <Round>();
            int           choice;
            Player        computer = new Player()
            {
                Name = "Computer"
            };                                             //instantiate a Player and give a value to the Name all at once.

            players.Add(computer);
            int gameCounter = 1;

            do//game loop
            {
                choice = RpsGameMethods.GetUserIntent();
                if (choice == 2)
                {
                    break;
                }

                Console.WriteLine($"\n\tThis is game #{gameCounter++}\n");

                //get the player name
                string playerName = RpsGameMethods.GetPlayerName();

                // check the list of players to see if this payer is a returning player.
                Player p1 = RpsGameMethods.VerifyPlayer(players, playerName);

                Game game = new Game();   // create a game
                game.Player1  = p1;       //
                game.Computer = computer; //

                Random rand = new Random();

                //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

                    // Player choice for game
                    round.p1Choice = RpsGameMethods.GetPlayerChoice();
                    // Random player choice for game
                    round.ComputerChoice = RpsGameMethods.GetRandomChoice();

                    //check the choices to see who won.
                    RpsGameMethods.GetRoundWinner(round);

                    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
                    int whoWon = RpsGameMethods.GetWinner(game);

                    //assign the winner to the game and increment wins and losses for both
                    RpsGameMethods.WhoWon(game, p1, computer, whoWon);
                }//end of rounds loop

                games.Add(game);
            } while (choice != 2);//end of game loop

            // Print current game data
            RpsGameMethods.PrintAllCurrentData(games, players, rounds);
        } //end of main
        static void Main(string[] args)
        {
            using (var context = new DbContextClass())
            {
                Console.WriteLine("Enter 10 to start wtih a fresh Db or anything else to play with the existing records.");
                string userInput = Console.ReadLine();
                int    usersNumber;
                if (int.TryParse(userInput, out usersNumber))
                {
                    if (usersNumber == 10)
                    {
                        context.Games.FromSqlRaw("TRUNCATE TABLE Games");
                        context.Rounds.FromSqlRaw("TRUNCATE TABLE Rounds");
                        context.Players.FromSqlRaw("DELETE FROM Players WHERE PlayerId > 0 AND PlayerId < 100");
                    }
                }

                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.

                //Try to find an existing player named computer
                if (context.Players.Any(x => x.Name == "Computer"))
                {
                    computer = context.Players.Where(x => x.Name == "Computer").FirstOrDefault();
                }
                else
                {
                    computer.Name = "Computer";
                    context.Players.Add(computer);
                    context.SaveChanges();
                }


                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.

                    Console.WriteLine($"\n\t\tThis is game #{gameCounter++}");

                    string playerName = RpsGameMethods.GetPlayerName();//get the player name. this is a place to make sure the user isn't using forbidden words or symbols

                    // if the player name is not already in the Db, add him
                    Player p1 = new Player();
                    if (!RpsGameMethods.VerifyPlayer(context.Players.ToList(), playerName))
                    {
                        p1.Name = playerName;
                        context.Add(p1);
                        context.SaveChanges();
                    }
                    else
                    {
                        p1 = context.Players.Where(x => x.Name == playerName).FirstOrDefault();
                    }

                    Game game = new Game();   // create a game
                    game.Player1  = p1;       //
                    game.Computer = 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.player1  = p1;       // add user (p1) to this round
                        round.Computer = computer; // add computer to this round

                        //get the choices for the 2 players and insert the players choices directly into the round
                        round.p1Choice       = RpsGameMethods.GetRandomChoice();     //this will give a random number starting at 0 to arg-1;
                        round.ComputerChoice = RpsGameMethods.GetRandomChoice();
                        round.Outcome        = RpsGameMethods.GetRoundWinner(round); //check the choices to see who won.
                        context.Add(round);
                        context.SaveChanges();
                        game.rounds.Add(round);//add this round to the games' List of rounds

                        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 gameWinner = RpsGameMethods.GetWinner(game);//get a number ot say is p1(1) or computer(2) won
                        //assign the winner to the game and increment wins and losses for both
                        if (gameWinner == 1)
                        {
                            game.winner = p1;
                            p1.Wins++;         //increments wins and losses.
                            computer.Losses++; //increments wins and losses.
                            Console.WriteLine($"The winner of this game was Player1\n");
                        }
                        else if (gameWinner == 2)
                        {
                            game.winner = computer;
                            p1.Losses++;     //increments wins and losses.
                            computer.Wins++; //increments wins and losses.
                            Console.WriteLine($"The winner of this game was the computer\n");
                        }
                    }//end of rounds loop
                    context.Add(game);//save the game
                    context.SaveChanges();
                } while (choice != 2);//end of game loop
                RpsGameMethods.PrintAllCurrentData(context.Games.ToList(), context.Players.ToList(), context.Rounds.ToList());
            }
        } //end of main
        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 = new Game();   // create a game
                game.Player1  = p1;       //
                game.Computer = 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
                    int  rpsChoice;
                    bool p1Choicebool;
                    do
                    {
                        System.Console.WriteLine("Do you want to choose rock{0}, paper{1}, or scissors{2}?");
                        string userChoice = Console.ReadLine();
                        p1Choicebool = int.TryParse(userChoice, out rpsChoice); //followed the same kind of format we used for pick 1 to play and 2 for quit.
                    } while(!p1Choicebool || rpsChoice < 0 || rpsChoice > 2);   //this will allow the user to pick his/her choice for rock, paper or scissors.

                    round.p1Choice       = (Choice)rpsChoice;
                    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
                    if (whoWon == 1)
                    {
                        game.winner = p1;
                        p1.record["wins"]++;         //increments wins and losses.
                        computer.record["losses"]++; //increments wins and losses.
                        System.Console.WriteLine($"\tThe winner of this game was Player1\n");
                    }
                    else if (whoWon == 2)
                    {
                        game.winner = computer;
                        p1.record["losses"]++;     //increments wins and losses.
                        computer.record["wins"]++; //increments wins and losses.
                        System.Console.WriteLine($"\tThe winner of this game was the computer\n");
                    }
                }//end of rounds loop

                games.Add(game);
            } while (choice != 2);//end of game loop

            RpsGameMethods.PrintAllCurrentData(games, players, rounds);
        } //end of main
        static void Main(string[] args)
        {
            using (var context = new DbContextClass())
            {
                int    choice;
                Player computer = new Player()
                {
                    Name = "Computer"
                };                                           //instantiate a Player and give a value to the Name all at once.
                context.Players.Add(computer);
                int gameCounter = 1;

                do//game loop
                {
                    choice = RpsGameMethods.GetUserIntent();
                    if (choice == 2)
                    {
                        break;
                    }

                    Console.WriteLine($"\n\tThis is game #{gameCounter++}\n");

                    //get the player name
                    string playerName = RpsGameMethods.GetPlayerName();

                    // check the list of players to see if this payer is a returning player.
                    Player p1 = RpsGameMethods.VerifyPlayer(context.Players.ToList(), playerName);

                    Game game = new Game();   // create a game
                    game.Player1  = p1;       //
                    game.Computer = computer; //
                    //context.Add(p1);
                    //context.SaveChanges();

                    //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

                        // Player choice for game
                        round.p1Choice = RpsGameMethods.GetPlayerChoice();
                        // Random player choice for game
                        round.ComputerChoice = RpsGameMethods.GetRandomChoice();

                        //check the choices to see who won.
                        RpsGameMethods.GetRoundWinner(round);

                        game.rounds.Add(round);//add this round to the games List of rounds
                        context.Rounds.Add(round);

                        //search the game.rounds List<> to see if one player has 2 wins
                        //if not loop to another round
                        int whoWon = RpsGameMethods.GetWinner(game);

                        //assign the winner to the game and increment wins and losses for both
                        //RpsGameMethods.WhoWon(game, p1, computer, whoWon);
                        if (whoWon == 1)
                        {
                            game.winner = p1;
                            p1.Wins++;         //increments wins and losses.
                            computer.Losses++; //increments wins and losses.
                            Console.WriteLine($"The winner of this game was Player1\n");
                            context.Add(round);
                            //context.SaveChanges();
                        }
                        else if (whoWon == 2)
                        {
                            game.winner = computer;
                            p1.Losses++;     //increments wins and losses.
                            computer.Wins++; //increments wins and losses.
                            Console.WriteLine($"The winner of this game was computer\n");
                            context.Add(round);
                            //context.SaveChanges();
                        }
                    }//end of rounds loop

                    context.Games.Add(game);
                    context.SaveChanges();
                } while (choice != 2);//end of game loop
                // Print current game data
                RpsGameMethods.PrintAllCurrentData(context.Games.ToList(), context.Players.ToList(), context.Rounds.ToList());
            }
        } //end of main