In the C# Player's Guide book there's a challenge in which you have to write the PigDice game in C#:It's a multiplayer game, every player starts with score 0.Player X rolls 2 dice.Player X's score is increased by the sum of the 2 dice' numbers.If Player X gets 1 on either die, his score becomes 0 again and it's the next player's turn.Player X can choose between play (roll dice) or hold (lose his turn)Player X wins if his score is equal or greater than NIs my approach reasonable? How can I improve my program?Gist LinkProgram.csusing System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace PigDice{    class Program    {        static void CreatePlayers(Player[] players)        {            for (int index = 0; index < players.Length; ++index)            {                string defaultName = $Player #{index + 1};                Console.Write(${defaultName}'s name: );                string playerName = Console.ReadLine();                players[index] = new Player(playerName == string.Empty ? defaultName : playerName);            }        }        static void ShowGameStatus(Game game) => Console.WriteLine(game.GetScoresTable());        static void Main(string[] args)        {            Console.WriteLine(Welcome to PigDice!);            Console.Write(Amount of players: );            // Number of players that are going to play            string inputNumber = Console.ReadLine();            int numberOfPlayers = Convert.ToInt32(inputNumber);            Game game = new Game(numberOfPlayers);            Player[] players = game.Players;            // Ask for and assign players' names            CreatePlayers(players);            Console.WriteLine(All set. Let the games begin!);            // First player starts            game.PlayingPlayer = players[0];            // GameLoop returns false if ended            while (GameLoop(game)) ;            Console.WriteLine(game.PlayingPlayer +  has won!);            Console.ReadKey();        }        private static bool GameLoop(Game game)        {            Player player = game.PlayingPlayer;            ShowGameStatus(game);            if (player.hasWon())                return false;            Console.Write(${player}'s turn! Play (no)? );            string playersChoice = Console.ReadLine();            // Handle player's choice to hold            if (playersChoice.ToLower() == no)            {                Console.WriteLine(${player} chose to hold!);                game.NextTurn();                return true;            }            // Handle player's choice to play            Dice dice = new Dice();            Console.WriteLine(${player} is rolling the dice!);            int number1 = dice.Roll();            int number2 = dice.Roll();            Console.WriteLine(${player} got {number1} and {number2});            // If one dice got 1, all score is lost            if (number1 == 1 || number2 == 1)            {                Console.WriteLine($Bad luck! {player} lost all points!);                player.OverallScore = 0;                game.NextTurn();                return true;            }            // Player got a score increase            int scoreWon = number1 + number2;            player.OverallScore += scoreWon;            Console.WriteLine(${player} got {scoreWon} score and now has {player.OverallScore});            return true;        }    }}Player.csusing System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace PigDice{    class Player    {        const int pointsToWin = 50; // instead of 100 which is                                     // incredibly hard to get        public string PlayerName { get; }        public int OverallScore { get; set; }        public bool hasWon() => this.OverallScore >= pointsToWin;        public Player(string playerName)        {            this.PlayerName = playerName;        }        public override string ToString()        {            return this.PlayerName;        }    }}Game.csusing System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace PigDice{    class Game    {        public Player[] Players { get; }        public int Turn { get; private set; }        public Player PlayingPlayer { get; set; }        public Game(int numberOfPlayers)        {            Players = new Player[numberOfPlayers];        }        public void NextTurn()        {            Turn += 1;            PlayingPlayer = Players[Turn % Players.Length];        }        public string GetScoresTable() {            string table = ----- Scores -----;            foreach (Player player in Players)                table += \n + player + :  + player.OverallScore;            return table;        }    }}Dice.csusing System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace PigDice{    class Dice    {        private Random random = new Random();        public int Roll() => random.Next(6) + 1;    }}
PigDice game in C#
c#;beginner;game;dice