Example #1
0
        static string SaveSettings()
        {
            Console.Clear();

            var boardWidth   = 0;
            var boardHeight  = 0;
            var userCanceled = false;

            (boardWidth, userCanceled) = GetUserIntInput("Enter board width", 8, 30, 0);
            if (userCanceled)
            {
                return("");
            }

            (boardHeight, userCanceled) = GetUserIntInput("Enter board height", 8, 30, 0);
            if (userCanceled)
            {
                return("");
            }

            _settings.BoardHeight = boardHeight;
            _settings.BoardWidth  = boardWidth;
            GameConfigHandler.SaveConfig(_settings);

            return("");
        }
Example #2
0
 private static string SetDefaults()
 {
     GameSettings.Settings.BoardHeight = 6;
     GameSettings.Settings.BoardWidth  = 7;
     GameConfigHandler.SaveConfig(GameSettings.Settings);
     return("");
 }
Example #3
0
        static string NewGame(bool playerOneMoves, bool isHumanVsComputer)
        {
            _settings = GameConfigHandler.LoadConfig();
            var    game = new Game(new AppDbContext(_options));
            string playerOneName;
            string playerTwoName;

            if (!isHumanVsComputer)
            {
                playerOneName = GetUserStrInput("Enter the name of player 1:");
                playerTwoName = GetUserStrInput("Enter the name of player 2:");
            }
            else
            {
                playerOneName = GetUserStrInput("Enter your player name:");
                playerTwoName = "Computer";
            }

            var gameName = GetUserStrInput("Enter the name of your game!");

            _settings.IsHumanVsComputer = isHumanVsComputer;
            game.InitializeNewGame(_settings.BoardHeight, _settings.BoardWidth);
            game.GameName       = gameName;
            game.PlayerOneMoves = playerOneMoves;
            game.PlayerOneName  = playerOneName;
            game.PlayerTwoName  = playerTwoName;
            return(Connect4Game(game));
        }
        public void OnGet(int?id, bool?restart)
        {
            if (restart != null)
            {
                RuntimeData.GameSettings.Board       = new CellState[RuntimeData.GameSettings.BoardHeight, RuntimeData.GameSettings.BoardWidth];
                RuntimeData.GameSettings.NumTurns    = 0;
                RuntimeData.GameSettings.YCoordinate = new int [RuntimeData.GameSettings.BoardWidth];
                if (RuntimeData.GameSettings.VersusBot)
                {
                    RuntimeData.GameSettings.IsPlayerOne = RuntimeData.WasPlayerFirst;
                }
                Settings = RuntimeData.GameSettings;
            }
            else
            {
                Settings = id != null?GameConfigHandler.LoadConfig(id.Value) : GameConfigHandler.LoadConfig();
            }

            if (id == null)
            {
                for (var i = 0; i < Settings.BoardWidth; i++)
                {
                    Settings.YCoordinate[i] = Settings.BoardHeight - 1;
                }
            }

            if (!Settings.IsPlayerOne)
            {
                MakeATurn(Bot.MakeMove(Settings));
            }
            RuntimeData.GameSettings = Settings;
        }
Example #5
0
        static void Main(string[] args)
        {
            _settings = GameConfigHandler.LoadConfig();

            Console.WriteLine($"Hello to {_settings.GameName}!");

            var gameMenu = new Menu(1)
            {
                Title = $"Start a new game of {_settings.GameName}",
                MenuItemsDictionary = new Dictionary <string, MenuItem>()
                {
                    {
                        "1",
                        new MenuItem()
                        {
                            Title            = "Computer starts",
                            CommandToExecute = TestGame
                        }
                    },
                    {
                        "2",
                        new MenuItem()
                        {
                            Title            = "Human starts",
                            CommandToExecute = null
                        }
                    },
                    {
                        "3",
                        new MenuItem()
                        {
                            Title            = "Human against Human",
                            CommandToExecute = null
                        }
                    }
                }
            };

            var Menu0 = new Menu()
            {
                Title = "Tic Tac Toe Main Menu",
                MenuItemsDictionary = new Dictionary <string, MenuItem>()
                {
                    { "S", new MenuItem()
                      {
                          Title            = "Start game",
                          CommandToExecute = gameMenu.Run
                      } },
                    { "J", new MenuItem()
                      {
                          Title            = "Set defaults for game (save to JSON)",
                          CommandToExecute = SaveSettings
                      } }
                }
            };

            Menu0.Run();
        }
Example #6
0
        public static string StartFromSave(int slot)
        {
            if (AvailableSaves.Saves[slot] != EmptySaveName)
            {
                PlayGame.PlayTheGame(GameConfigHandler.LoadConfig(slot), true);
            }

            return("");
        }
Example #7
0
 private static string ChangeHeight()
 {
     var(hMin, hMax) = (6, 12);
     GameSettings.Settings.BoardHeight =
         InputHandler.GetUserIntInput($"Current height is {GameSettings.Settings.BoardHeight}.\n" +
                                      "Enter board height (Type X to set default):", hMin, hMax,
                                      $"Height must be between {hMin} and {hMax}", true) ?? 6;
     GameConfigHandler.SaveConfig(GameSettings.Settings);
     return("");
 }
Example #8
0
 private static string ChangeWidth()
 {
     var(wMin, wMax) = (7, 14);
     GameSettings.Settings.BoardWidth =
         InputHandler.GetUserIntInput($"Current width is {GameSettings.Settings.BoardWidth}.\n" +
                                      "Enter board width (Type X to set default):", wMin, wMax,
                                      $"Width must be between {wMin} and {wMax}", true) ?? 7;
     GameConfigHandler.SaveConfig(GameSettings.Settings);
     return("");
 }
Example #9
0
        static string TestGame()
        {
            var game = new BoardDim(_settings);

            Console.WriteLine();

            var done = false;

            do
            {
                Console.Clear();
                GameUI.PrintBoard(game);
                BoardDim.Mines.MinesSetter(_settings.BoardHeight, _settings.BoardWidth);

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

                (userYint, userCanceled) = GetUserIntInput("Enter Y coordinate", 1, 30, 0);
                if (!userCanceled)
                {
                    (userXint, userCanceled) = GetUserIntInput("Enter X coordinate", 1, 30, 0);
                }

                if (userYint > _settings.BoardHeight || userXint > _settings.BoardWidth)
                {
                    Console.WriteLine("Out of Range");
                }

                if (userCanceled)
                {
                    done = true;
                }
                else
                {
                    game.Move(userYint - 1, userXint - 1);
                }

                var h = Engine.BoardDim.Board;
                _boardState = BoardDim.Board;
                GameConfigHandler.SaveCellState(_boardState);
            } while (!done);



            return("GAME OVER!!");
        }
Example #10
0
        static string SaveSettings()
        {
            Console.Clear();

            var boardWidth       = 0;
            var boardHeight      = 0;
            var winningCondition = 0;
            var userCanceled     = false;

            (boardHeight, userCanceled) = GetUserIntInput("Enter number of rows (minimum is 4 and maximum is 30) :", 4, 30);
            if (userCanceled)
            {
                return("");
            }

            (boardWidth, userCanceled) = GetUserIntInput("Enter number of columns (minimum is 5 and maximum is 30) :", 5, 30);
            if (userCanceled)
            {
                return("");
            }

            var maxWinningCondition = 0;

            if (boardHeight > boardWidth || boardHeight == boardWidth)
            {
                maxWinningCondition = boardHeight;
            }
            else
            {
                maxWinningCondition = boardWidth;
            }
            (winningCondition, userCanceled) = GetUserIntInput("Enter how many chips in a row is needed to win :", 2, maxWinningCondition);
            if (userCanceled)
            {
                return("");
            }

            _settings = new GameSettings()
            {
                BoardHeight      = boardHeight,
                BoardWidth       = boardWidth,
                WinningCondition = winningCondition
            };
            GameConfigHandler.SaveConfig(_settings);
            return("");
        }
Example #11
0
        static void Main(string[] args)
        {
            Clear();

            WriteLine("Welcome to Minesweeper");


            _settings = GameConfigHandler.LoadConfig();


            var gameMenu = new Menu(1)
            {
                Title = "New Game",
                MenuItemsDictionary = new Dictionary <string, MenuItem>()
                {
                    {
                        "1", new MenuItem()
                        {
                            Title            = "Play now",
                            CommandToExecute = TestGame
                        }
                    },
                    {
                        "2", new MenuItem()
                        {
                            Title            = "Level 2",
                            CommandToExecute = TestGame
                        }
                    },


                    {
                        "3", new MenuItem()
                        {
                            Title            = "Customize Your Board size",
                            CommandToExecute = SaveSettings
                        }
                    },
                }
            };

            var menu0 = new Menu(0) //main menu
            {
                Title = "Main Menu",
                MenuItemsDictionary = new Dictionary <string, MenuItem>()
                {
                    {
                        "S", new MenuItem()
                        {
                            Title            = "Start game",
                            CommandToExecute = gameMenu.Run
                        }
                    },
                    {
                        "J", new MenuItem()
                        {
                            Title            = "Set default board size for game (save to JSON)",
                            CommandToExecute = SaveSettings
                        }
                    },


                    {
                        "D", new MenuItem()
                        {
                            Title            = "Donate",
                            CommandToExecute = null
                        }
                    }
                }
            };

            menu0.Run();
        }
Example #12
0
        private static void Main(string[] args)
        {
            _settings = GameConfigHandler.LoadConfig();

            Console.WriteLine($"Hello {_settings.GameName}!");

            var menuLevel2 = new Menu(2)
            {
                Title = "Level2 menu",
                MenuItemsDictionary = new Dictionary <string, MenuItem>()
            };

            var gameMenu = new Menu(1)
            {
                Title = $"Start a new game of {_settings.GameName}",
                MenuItemsDictionary = new Dictionary <string, MenuItem>()
                {
                    {
                        "1", new MenuItem()
                        {
                            Title = "Beginner", CommandToExecute = RunGameEasy
                        }
                    },
                    {
                        "2", new MenuItem()
                        {
                            Title = "Intermediate", CommandToExecute = RunGameMedium
                        }
                    },
                    {
                        "3", new MenuItem()
                        {
                            Title = "Expert", CommandToExecute = RunGameHard
                        }
                    },
                    {
                        "4", new MenuItem()
                        {
                            Title = "Custom", CommandToExecute = RunGameCustom
                        }
                    },
                    {
                        "5", new MenuItem()
                        {
                            Title = "Custom Game from settings", CommandToExecute = RunGameCustomFromSettings
                        }
                    },
                }
            };

            var menu0 = new Menu()
            {
                Title = $"{_settings.GameName} Main Menu",
                MenuItemsDictionary = new Dictionary <string, MenuItem>()
                {
                    {
                        "S", new MenuItem()
                        {
                            Title            = "Start game",
                            CommandToExecute = gameMenu.Run
                        }
                    },

                    /*{
                     *  "J", new MenuItem()
                     *  {
                     *      Title = "Set defaults for game (save to JSON)",
                     *      CommandToExecute = SaveSettings
                     *  }
                     * },
                     * {
                     *  "L", new MenuItem()
                     *  {
                     *      Title = "Continue Game from saved file",
                     *      CommandToExecute = SavedGamesLoad
                     *  }
                     * },*/
                    {
                        "D", new MenuItem()
                        {
                            Title            = "Continue Game from database save",
                            CommandToExecute = SavedGamesLoadFromDb
                        }
                    }
                }
            };

            menu0.Run();
        }
        static string StartGame(Game?game)
        {
            if (game == null)
            {
                game = new Game(_settings);
            }

            var done = false;

            do
            {
                Console.Clear();
                GameUI.PrintBoard(game);

                var userXInt = -1;

                do
                {
                    Console.WriteLine("Give me row number, or press \'s\' to save game, or press \'q\' to leave game.");
                    Console.Write(">");
                    var userInput = Console.ReadLine();

                    if (userInput == null || userInput.Trim().Equals(""))
                    {
                        continue;
                    }

                    if (userInput.Trim().ToLower().Equals("q"))
                    {
                        userXInt = -1;
                        break;
                    }

                    if (userInput.Trim().ToLower().Equals("s"))
                    {
                        var saved = false;
                        do
                        {
                            Console.WriteLine("Enter save name or press\'c\' to cancel save");
                            Console.Write("> ");
                            var input = Console.ReadLine()?.Trim();

                            if (input == null || input.Equals(""))
                            {
                                continue;
                            }

                            if (input.ToLower().Equals("c"))
                            {
                                saved = true;
                            }

                            else
                            {
                                bool gameExists = GameConfigHandler.SaveGame(game, input.Trim(), false);

                                if (gameExists)
                                {
                                    Console.WriteLine("File already exists. Overwrite it? y/n");
                                    var overwriteHandled = false;
                                    do
                                    {
                                        var response = Console.ReadLine()?.Trim().ToLower();
                                        if (response == null || response.Equals(""))
                                        {
                                            continue;
                                        }

                                        if (response.Equals("y") || response.Equals("yes"))
                                        {
                                            GameConfigHandler.SaveGame(game, input.Trim(), true);
                                            Console.WriteLine($"Saved game as \'{input}\'!");
                                            saved            = true;
                                            overwriteHandled = true;
                                        }

                                        if (response.Equals("n") || response.Equals("no"))
                                        {
                                            overwriteHandled = true;
                                        }
                                    } while (!overwriteHandled);
                                }
                                else
                                {
                                    Console.WriteLine($"Saved game as \'{input}\'!");
                                    saved = true;
                                }
                            }
                        } while (!saved);
                        userXInt = -1;
                        continue;
                    }

                    if (!int.TryParse(userInput, out userXInt))
                    {
                        Console.WriteLine($"{userInput} is not a number.");
                        userXInt = -1;
                        continue;
                    }

                    if (userXInt <= 0 || game.BoardWidth < userXInt)
                    {
                        Console.WriteLine($"Column {userXInt} does not exist.");
                        userXInt = -1;
                        continue;
                    }

                    if (game.IsColumnFull(userXInt))
                    {
                        Console.WriteLine($"Column {userXInt} is full.");
                        userXInt = -1;
                    }
                } while (userXInt < 0);

                if (userXInt == -1)
                {
                    break;
                }

                game.Move(userXInt);

                if (game.IsGameDone())
                {
                    Console.Clear();
                    GameUI.PrintBoard(game);
                    Console.WriteLine("No one won!");
                    done = true;
                }
            } while (!done);

            return("X");
        }
        static string LoadGame()
        {
            Console.Clear();
            var savedGamedDictionary = new Dictionary <int, string>();

            using (ctx = new AppDbContext())
            {
                var counter = 1;
                foreach (var saveGame in ctx.Games)
                {
                    savedGamedDictionary.Add(counter, saveGame.SaveName);
                    counter += 1;
                }
            }

            if (savedGamedDictionary.Count == 0)
            {
                Console.WriteLine("No save files found...");
                Console.WriteLine("Returning to previous menu.");
                Thread.Sleep(3000);
                return("");
            }

            Console.WriteLine("Select game by number or type \'c\' to cancel.");
            for (var i = 1; i <= savedGamedDictionary.Count; i++)
            {
                Console.WriteLine(i + ". " + savedGamedDictionary[i]);
            }

            var done = false;

            do
            {
                var userInput = Console.ReadLine();

                if (userInput == null || userInput.Trim().Equals("") || userInput.ToLower().Equals("c"))
                {
                    return("");
                }

                if (!int.TryParse(userInput, out var selectedGameInt))
                {
                    Console.WriteLine($"{userInput} is not a number.");
                    continue;
                }

                if (selectedGameInt <= 0 || savedGamedDictionary.Count < selectedGameInt)
                {
                    Console.WriteLine($"Game {selectedGameInt} does not exist.");
                    continue;
                }

                using (ctx = new AppDbContext())
                {
                    foreach (var saveGame in ctx.Games)
                    {
                        if (saveGame.SaveName.Equals(savedGamedDictionary[selectedGameInt]))
                        {
                            Game game = GameConfigHandler.GetGameFromDb(saveGame.GameId);
                            StartGame(game);
                            return("");
                        }
                    }
                    return("");
                }
            } while (!done);

            return("");
        }
Example #15
0
        static void Main(string[] args)
        {
            Console.Clear();

            _settings = GameConfigHandler.LoadConfig();

            Console.WriteLine($"Hello {_settings.GameName}!");

            var menuLevel2 = new Menu(2)
            {
                Title = "Level2 menu",
                MenuItemsDictionary = new Dictionary <string, MenuItem>()
                {
                    {
                        "1", new MenuItem()
                        {
                            Title            = "Nothing here",
                            CommandToExecute = null
                        }
                    },
                }
            };

            var gameMenu = new Menu(1)
            {
                Title = $"Start a new game of {_settings.GameName}",
                MenuItemsDictionary = new Dictionary <string, MenuItem>()
                {
                    {
                        "1", new MenuItem()
                        {
                            Title            = "Human against AI",
                            CommandToExecute = RunGameAI
                        }
                    },
                    {
                        "3", new MenuItem()
                        {
                            Title            = "Human against Human",
                            CommandToExecute = RunGamePvP
                        }
                    },
                    {
                        "4", new MenuItem()
                        {
                            Title            = "One more menu",
                            CommandToExecute = menuLevel2.Run
                        }
                    },
                }
            };



            var menu0 = new Menu(0)
            {
                Title = $"{_settings.GameName} Main Menu",
                MenuItemsDictionary = new Dictionary <string, MenuItem>()
                {
                    {
                        "S", new MenuItem()
                        {
                            Title            = "Start game",
                            CommandToExecute = gameMenu.Run
                        }
                    },
                    {
                        "J", new MenuItem()
                        {
                            Title            = "Set defaults for game (save to JSON)",
                            CommandToExecute = SaveSettings
                        }
                    }
                }
            };

            menu0.Run();
        }