コード例 #1
0
        static void Main(string[] args)
        {
            #region Initilize Classes
            using var context = new LudoGameContext();

            var loadSavedGame = false;
            var gUI           = new RunGUI();
            var game          = new GameInitializer();
            var gameMotor     = new GameMotor();
            game.GameBoard.PopulateBoard();
            #endregion
            var  loadGameAnswer = "";
            bool validChoice    = false;
            LoadSavedGameOrCreateNewGame(context, ref loadSavedGame, gUI, game, ref loadGameAnswer, ref validChoice);
            Console.Clear();

            bool gameHasEnd = false;
            while (gameHasEnd == false)
            {
                gameHasEnd = PlayerTurn(gUI, game, gameMotor, gameHasEnd);
                Console.Clear();

                var  exitGameAnswer    = "";
                bool validChoiceInGame = false;
                ContinueOrExit(context, loadSavedGame, game, ref exitGameAnswer, ref validChoiceInGame);
                Console.Clear();
            }
        }
コード例 #2
0
        private static bool PlayerTurn(RunGUI gUI, GameInitializer game, GameMotor gameMotor, bool gameHasEnd)
        {
            for (int i = 0; i < game.Users.Count; i++)
            {
                var player = game.PlayerByID(i + 1);
                gUI.ShowWhichPlayer(player);

                gameMotor.RollDie(game.Die);
                gUI.ShowDie(game.Die.Roll);

                var IDOnPawn = gUI.TimeToChoosePawn(player);
                var pawn     = player.PawnByID(IDOnPawn);

                game.IfNotStartedSetStartPosition(pawn);
                var landingSquare = gameMotor.Move(pawn, game.Die.Roll);
                gUI.WalkWithPawn(pawn, game.Die.Roll);

                gameHasEnd = gameMotor.CheckIfReachedGoal(player, pawn, gameHasEnd);
                gameMotor.OccupySquare(game.GameBoard, landingSquare);
            }

            return(gameHasEnd);
        }
コード例 #3
0
        private static void LoadSavedGameOrCreateNewGame(LudoGameContext context, ref bool loadSavedGame, RunGUI gUI, GameInitializer game, ref string loadGameAnswer, ref bool validChoice)
        {
            while (validChoice == false)
            {
                loadGameAnswer = Menu.DisplayMessageReturnUserInput("y. = Load saved game\n" +
                                                                    "n. = Create new game");
                switch (loadGameAnswer)
                {
                case "y":
                    var gameNames = context.Users
                                    .Select(x => x.GameName)
                                    .Distinct().ToList();

                    foreach (var gameName in gameNames)
                    {
                        Console.WriteLine($"Saved Game: { gameName }");
                    }
                    var userGameToLoad = Console.ReadLine();
                    game.Users = context.Users.Where(u => u.GameName == userGameToLoad).ToList();

                    foreach (var user in game.Users)
                    {
                        user.Pawns = context.Pawns.Where(p => p.UserID == user.UserID).ToList();
                    }


                    loadSavedGame = true;
                    validChoice   = true;
                    break;

                case "n":
                    var numberOfPlayers = gUI.NumberOfPlayers();
                    var nameOfGame      = Menu.DisplayMessageReturnUserInput("Name your game: ");
                    for (int i = 1; i <= numberOfPlayers; i++)
                    {
                        string name = gUI.GetAndReturnName();
                        gUI.ShowPawnColorMenu();
                        var colorOnPawn = game.TranslateChoiceToColor(Console.ReadLine());
                        var pawns       = game.CreateListOfPawns(colorOnPawn);
                        game.AddUserToPlayerList(new User(name, i, pawns, nameOfGame));
                    }
                    validChoice = true;
                    break;

                default:
                    Console.WriteLine("No valid input");
                    Console.ReadKey();
                    Console.Clear();
                    break;
                }
            }
        }