private static void DeleteGame(GameSaveDbContext context, Game gameContent) { foreach (var gameSave in context.GameSave) { Console.WriteLine($"{gameSave.GameSaveId} {gameSave.SaveName}"); } bool stateOfValue; int userInput; do { Console.Write("Select Game Number: "); string input2 = Console.ReadLine(); stateOfValue = int.TryParse(input2, out userInput); if (!stateOfValue) { Console.WriteLine("Error: " + input2 + " is not a valid number"); } } while (!stateOfValue); GameSave gameDelete = new GameSave(); { gameDelete.GameSaveId = userInput; } context.GameSave.Remove(gameDelete); context.SaveChanges(); }
public Game(GameSaveDbContext context) { Settings = new GameSettings(); if (Settings.BoardHeight < ConstantSize._minimumBoardHeight || Settings.BoardWidth < ConstantSize._minimumBoardWidth) { throw new ArgumentException( $"Board size has to be at least {ConstantSize._minimumBoardHeight} x {ConstantSize._minimumBoardWidth} "); } if (Settings.BoardHeight > ConstantSize._maximumBoardHeight || Settings.BoardWidth > ConstantSize._maximumBoardWidth) { throw new ArgumentException( $"Board size cannot be greater than {ConstantSize._maximumBoardHeight} x {ConstantSize._maximumBoardWidth} "); } _context = context; BoardHeight = Settings.BoardHeight; BoardWidth = Settings.BoardWidth; NumberOfMines = Settings.NumberOfMines; if (Settings.isLoadedGame == true) { Board = Settings.Board; } else if (Settings.isLoadedGame == false) { InitializeNewBoard(BoardWidth, BoardHeight); } SetNumberOfMinesOnBoard(); }
/*private static void AutoSaveGame(Game gameContent, GameSaveDbContext context) * { * gameContent.SaveName = UniqueAutoSaveName(); * * foreach (var gameSave in context.GameSave) * { * if (gameContent.SaveName == gameSave.SaveName) * { * * } * context.GameSave.Add(new GameSave() * { * SaveName = gameContent.SaveName, * BoardHeight = gameContent.BoardHeight, * BoardWidth = gameContent.BoardWidth, * NumberOfMines = gameContent.NumberOfMines, * BoardState = JsonConvert.SerializeObject(gameContent.gamePlayBoard) * * }); * } * } * * private static string UniqueAutoSaveName() * { * var AutoSaveName = "AutoSave"; * var i = 1; * AutoSaveName = AutoSaveName + $"{i}"; * i++; * * return AutoSaveName; * }*/ private static string Beginner(GameSaveDbContext context) { GameSettings settings = new GameSettings(); settings.BoardHeight = 10; settings.BoardWidth = 10; settings.NumberOfMines = 10; return(NewGame(settings, false, context)); }
private static string Expert(GameSaveDbContext context) { GameSettings settings = new GameSettings(); _settings = settings; settings.BoardHeight = 24; settings.BoardWidth = 24; settings.NumberOfMines = 99; return(NewGame(settings, false, context)); }
private static string InterMediate(GameSaveDbContext context) { GameSettings settings = new GameSettings(); _settings = settings; settings.BoardHeight = 16; settings.BoardWidth = 16; settings.NumberOfMines = 40; return(NewGame(settings, false, context)); }
private static void OverWriteGame(GameSaveDbContext context, Game gameContent) { var overWriitenGame = new GameSave(); { overWriitenGame.SaveName = gameContent.SaveName; overWriitenGame.BoardHeight = gameContent.BoardHeight; overWriitenGame.BoardWidth = gameContent.BoardWidth; overWriitenGame.NumberOfMines = gameContent.NumberOfMines; overWriitenGame.BoardState = JsonConvert.SerializeObject(gameContent.Board); } context.GameSave.Update(overWriitenGame); context.SaveChanges(); }
private static string LoadGame(GameSaveDbContext context) { _settings.isLoadedGame = true; Console.WriteLine("Select game to load"); Console.WriteLine("====================="); foreach (var gameSave in context.GameSave) { Console.WriteLine($"{gameSave.GameSaveId} {gameSave.SaveName}"); } bool stateOfValue; int userInput; do { Console.Write("Select Game Number: "); string input2 = Console.ReadLine(); stateOfValue = int.TryParse(input2, out userInput); if (!stateOfValue) { Console.WriteLine("Error: " + input2 + " is not a valid number"); } } while (!stateOfValue); foreach (var gameSave in context.GameSave) { if (gameSave.GameSaveId == userInput) { _settings.BoardHeight = gameSave.BoardHeight; _settings.BoardWidth = gameSave.BoardWidth; _settings.NumberOfMines = gameSave.NumberOfMines; _settings.Board = JsonConvert.DeserializeObject <CellStatus[, ]>(gameSave.BoardState); NewGame(_settings, false, context); } } return(""); }
public StartGameCustomModel(GameSaveDbContext context) { _context = context; }
public PlayGameModel(GameSaveDbContext context) { _context = context; GameEngine = new GameEngine.Game(_context); }
public StartNewGamePageModel(GameSaveDbContext context) { _context = context; }
private static string NewGame(GameSettings settings, bool needInput, GameSaveDbContext context) { if (needInput == true) { _game.Settings.BoardHeight = GetBardDimensions.GetSizeofBoardHeight(); _game.Settings.BoardWidth = GetBardDimensions.GetSizeOfBoardWidth(); _game.Settings.NumberOfMines = GetBardDimensions.GetNumberOfMines(); } string moveState; Console.Clear(); do { GameUi.PrintBoard(_game); if (Console.ForegroundColor != _defaultForeGroundColor) { Console.ForegroundColor = _defaultForeGroundColor; } Console.WriteLine($"Enter X and Y coordinate (e.g \"A,G\") "); int xIndexOnBoard; string actualUserInputXindex; do { var xCoordinateUserInput = CheckUserInput(); actualUserInputXindex = xCoordinateUserInput.ToString().ToUpper(); xIndexOnBoard = char.ToUpper(xCoordinateUserInput) - 64; if (xIndexOnBoard > _game.Settings.BoardWidth) { Console.WriteLine("Input is out Of bound"); } } while (xIndexOnBoard > _game.Settings.BoardWidth); int yIndexOnBoard; string actualUserInputYindex; do { var yCoordinateUserInput = CheckUserInput(); actualUserInputYindex = yCoordinateUserInput.ToString().ToUpper(); yIndexOnBoard = char.ToUpper(yCoordinateUserInput) - 64; if (yIndexOnBoard > _game.Settings.BoardHeight) { Console.WriteLine("Input is out Of bound"); } } while (yIndexOnBoard > _game.Settings.BoardHeight); Console.WriteLine($"X:{actualUserInputXindex} Y:{actualUserInputYindex}"); Console.WriteLine("SpaceBar to Flag| Enter(⏎) to open|| S to save||esc to quit"); ConsoleKeyInfo command; do { command = Console.ReadKey(true); if (command.Key == ConsoleKey.S) { SaveGameToDb(_game, context); } if (command.Key == ConsoleKey.Escape) { return(""); } } while (!(command.Key == ConsoleKey.Enter || command.Key == ConsoleKey.Spacebar || command.Key == ConsoleKey.S || command.Key == ConsoleKey.Escape)); moveState = _game.Move(Math.Abs(yIndexOnBoard), Math.Abs(xIndexOnBoard), command.Key); //AutoSaveGame(game, context); } while (moveState != "GameOver"); GameUi.PrintBoard(_game); if (moveState == "GameOver") { Console.WriteLine("============="); Console.WriteLine("GAME OVER"); Console.WriteLine("============="); } if (Console.ForegroundColor != _defaultForeGroundColor) { Console.ForegroundColor = _defaultForeGroundColor; } Console.WriteLine("(Press any key to continue)"); Console.ReadKey(true); Console.Clear(); return(""); }
private static void RenameGame(GameSaveDbContext context, Game gameContent) { }
static void Main(string[] args) { Console.Write(FiggleFonts.Varsity.Render("MineSweeper")); var dbOption = new DbContextOptionsBuilder <GameSaveDbContext>() .UseSqlite(@"Data Source=/Users/fathindosunmu/OneDrive/Csharp/icd0008-2019f/MineSweeper/WebApplication/GameSave.db").Options; var context = new GameSaveDbContext(dbOption); _game = new Game(context); var gameMenu = new Menu(1) { Title = "Start a new game of MineSweeper", MenuItemsDictionary = new Dictionary <string, MenuItem> { { "P", new MenuItem { Title = "Play Customized Game", CommandToExecute = () => NewGame(_settings, true, context) } }, { "B", new MenuItem { Title = "Beginner", CommandToExecute = () => Beginner(context) } }, { "I", new MenuItem { Title = "Intermediate", CommandToExecute = () => InterMediate(context) } }, { "E", new MenuItem { Title = "Expert", CommandToExecute = () => Expert(context) } } } }; var menu0 = new Menu { Title = "MineSweeper Main menu", MenuItemsDictionary = new Dictionary <string, MenuItem> { { "N", new MenuItem { Title = "Start game", CommandToExecute = gameMenu.Run } }, { "L", new MenuItem { Title = "LoadGame", CommandToExecute = () => LoadGame(context) } } } }; menu0.Run(); Console.Clear(); }
private static void SaveGameToDb(Game gameContent, GameSaveDbContext context) { bool savedSuccessfully = true; string saveName; do { Console.Write("Enter name of Save: "); saveName = Console.ReadLine()?.Trim() ?? ""; if (saveName == "") { Console.WriteLine("Enter a file Name! File Name cannot be empty"); } } while (saveName == ""); gameContent.SaveName = saveName; foreach (var gameSave in context.GameSave) { if (gameContent.SaveName == gameSave.SaveName) { savedSuccessfully = false; Console.WriteLine($" \"{gameContent.SaveName}\" already exists!"); Console.WriteLine( "O to OverWrite Existing Game|| R to Rename Game Name|| D(␡) to delete a Game"); ConsoleKeyInfo command; do { command = Console.ReadKey(true); switch (command.Key) { case ConsoleKey.O: OverWriteGame(context, gameContent); break; case ConsoleKey.R: //RenameGame(); break; case ConsoleKey.D: DeleteGame(context, gameContent); break; default: Console.WriteLine("Invalid Input"); break; } } while (!(command.Key == ConsoleKey.O || command.Key == ConsoleKey.R || command.Key == ConsoleKey.Delete)); } } if (savedSuccessfully) { context.GameSave.Add(new GameSave() { SaveName = gameContent.SaveName, BoardHeight = gameContent.BoardHeight, BoardWidth = gameContent.BoardWidth, NumberOfMines = gameContent.NumberOfMines, BoardState = JsonConvert.SerializeObject(gameContent.Board) }); context.SaveChanges(); } }