Example #1
0
        private static string NewGame()
        {
            var dbOption = new DbContextOptionsBuilder <AppDbContext>()
                           .UseSqlite("Data Source=/Users/maria/csharp2019fall/Proge/minesweeper/WebApp/app.db").Options;

            var ctx        = new AppDbContext(dbOption);
            var gameEngine = new GameBoardEngine(ctx);

            var userHeight       = 0;
            var userWidth        = 0;
            var userCanceledGame = false;

            (userHeight, userCanceledGame, _, _) = GetUserIntInput("Enter board height", 8, 64, 0);
            ClearConsoleIfUserCanceled(userCanceledGame);

            (userWidth, userCanceledGame, _, _) = GetUserIntInput("Enter board width", 8, 64, 0);
            ClearConsoleIfUserCanceled(userCanceledGame);


            var game = new GameBoard
            {
                Height    = userHeight,
                MineCount = 10,
                Width     = userWidth
            };

            gameEngine.CreateNewGameBoard(userHeight, userWidth, 10);

            ConsoleUI.PrintBoard(gameEngine, game);

            var userXint     = 0;
            var userYint     = 0;
            var userCanceled = false;
            var plantFlag    = false;
            var saveGame     = false;

            (userYint, userCanceled, _, _) = GetUserIntInput("Enter Y coordinate", 1, game.Height, 0);
            ClearConsoleIfUserCanceled(userCanceled);

            (userXint, userCanceled, _, _) = GetUserIntInput("Enter X coordinate", 1, game.Width, 0);
            ClearConsoleIfUserCanceled(userCanceled);

            gameEngine.FirstMove(userXint, userYint, new Random(), game);
            gameEngine.RevealPanel(userXint, userYint, game);

            MainGame(gameEngine, game, ctx, userYint, userXint, userCanceled, saveGame, plantFlag, "newGame");
            return("");
        }
Example #2
0
        public IActionResult OnPost()
        {
            GameBoard !.MineCount = 10;

            var gameBoardEngine = new GameBoardEngine(_appDbContext);
            var gameBoard       = gameBoardEngine.CreateNewGameBoard(GameBoard.Height, GameBoard.Width, GameBoard.MineCount);

            gameBoard.SaveGameName = GameBoard.SaveGameName;

            if (!ModelState.IsValid)
            {
                return(Page());
            }

            if (_appDbContext.GameBoards.Any(e => e.SaveGameName == GameBoard !.SaveGameName))
            {
                ModelState.AddModelError("GameBoard.SaveGameName", "A save game with this name already exists.");
                return(Page());
            }
            gameBoardEngine.AddGameBoardToDb(gameBoard);
            return(RedirectToPage("/PlayGame/Index", new { id = gameBoard.Id }));
        }