using laba3.Core; using laba3.Subprograms; using ProgLab1.GUI; using System; class Program { static MenuForm mainMenuForm; static MenuForm snakeDiffMenuForm; static MenuForm snakeSizeMenuForm; static AboutMeForm aboutMeForm; static MathGameForm mathGameForm; [STAThread] // Требуется для Windows Forms static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); int sizex = 20; int sizey = 20; SnakeGame.Level difficulty = 0; Menu sizeMenu = new Menu("Select world size"); sizeMenu.AddOption("Small size (10x10)", () => { sizex = 10; sizey = 10; }); sizeMenu.AddOption("Medium size (20x20)", () => { sizex = 20; sizey = 20; }); sizeMenu.AddOption("Big size (40x20)", () => { sizex = 40; sizey = 20; }); Menu difficultyMenu = new Menu("Select difficulty"); difficultyMenu.AddOption("Easy", () => { difficulty = SnakeGame.Level.Low; }); difficultyMenu.AddOption("Medium", () => { difficulty = SnakeGame.Level.Medium; }); difficultyMenu.AddOption("Hard", () => { difficulty = SnakeGame.Level.High; }); Menu mainMenu = new Menu("Select option"); mainMenu.AddOption("Guess answer math game", () => mainMenuForm.SwitchToForm(mathGameForm)); mainMenu.AddOption("About me", () => mainMenuForm.SwitchToForm(aboutMeForm)); mainMenu.AddOption("Array sort", () => new ArraySortDemo().Run()); mainMenu.AddOption("Snake game", () => { mainMenuForm.Hide(); snakeDiffMenuForm.Show(); }); mainMenu.AddOption("Exit", () => Exit()); Utils.Arrays withoutParams = new Utils.Arrays(); Utils.Arrays withOneParam = new Utils.Arrays(10); Utils.Arrays withTwoParams = new Utils.Arrays(10, 100); mainMenuForm = new MenuForm(mainMenu); snakeDiffMenuForm = new MenuForm(difficultyMenu, () => { snakeDiffMenuForm.SwitchToForm(snakeSizeMenuForm); }); snakeSizeMenuForm = new MenuForm(sizeMenu, () => { snakeSizeMenuForm.Hide(); SnakeGame game = new SnakeGame(difficulty, sizex, sizey); game.start(); snakeSizeMenuForm.SwitchToForm(mainMenuForm); }); aboutMeForm = new AboutMeForm(mainMenuForm); mathGameForm = new MathGameForm(mainMenuForm); Application.Run(mainMenuForm); } private static void PrintAboutMe() { const string aboutme = @"Морозов Иван Сергеевич 6106 aka DIvan2000 Website: divan2000.su"; Console.WriteLine(aboutme); } private static void Exit() { ExitDialog.Exit(); } private static bool ExitMenu() { while (true) { Console.WriteLine("Really exit? [y/n]"); switch (Console.ReadKey(true).KeyChar) { case 'y': return true; case 'n': return false; default: Console.Clear(); Console.WriteLine("Wrong key!"); break; } } } }