2024-11-29 15:35:19 +04:00
|
|
|
|
using laba3.Core;
|
|
|
|
|
using laba3.Subprograms;
|
2024-12-14 11:21:47 +04:00
|
|
|
|
using ProgLab1.GUI;
|
2024-11-29 15:35:19 +04:00
|
|
|
|
using System;
|
|
|
|
|
|
|
|
|
|
class Program
|
|
|
|
|
{
|
2024-12-14 11:21:47 +04:00
|
|
|
|
static MenuForm mainMenuForm;
|
|
|
|
|
static MenuForm snakeDiffMenuForm;
|
|
|
|
|
static MenuForm snakeSizeMenuForm;
|
2024-12-14 13:32:15 +04:00
|
|
|
|
static AboutMeForm aboutMeForm;
|
2024-12-14 14:49:42 +04:00
|
|
|
|
static MathGameForm mathGameForm;
|
2024-12-22 11:40:58 +04:00
|
|
|
|
static SnakeForm snakeForm;
|
2024-12-22 12:19:30 +04:00
|
|
|
|
static ArraySortGUI arrayGUI;
|
2024-12-14 11:21:47 +04:00
|
|
|
|
|
|
|
|
|
[STAThread] // Требуется для Windows Forms
|
2024-11-29 15:35:19 +04:00
|
|
|
|
static void Main()
|
|
|
|
|
{
|
2024-12-14 11:21:47 +04:00
|
|
|
|
Application.EnableVisualStyles();
|
|
|
|
|
Application.SetCompatibleTextRenderingDefault(false);
|
|
|
|
|
|
|
|
|
|
int sizex = 20;
|
|
|
|
|
int sizey = 20;
|
2024-12-22 11:40:58 +04:00
|
|
|
|
SnakeForm.Level difficulty = 0;
|
2024-12-14 11:21:47 +04:00
|
|
|
|
|
|
|
|
|
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");
|
2024-12-22 11:40:58 +04:00
|
|
|
|
difficultyMenu.AddOption("Easy", () => { difficulty = SnakeForm.Level.Low; });
|
|
|
|
|
difficultyMenu.AddOption("Medium", () => { difficulty = SnakeForm.Level.Medium; });
|
|
|
|
|
difficultyMenu.AddOption("Hard", () => { difficulty = SnakeForm.Level.High; });
|
2024-12-14 11:21:47 +04:00
|
|
|
|
|
2024-12-14 10:20:52 +04:00
|
|
|
|
Menu mainMenu = new Menu("Select option");
|
2024-12-14 14:49:42 +04:00
|
|
|
|
mainMenu.AddOption("Guess answer math game", () => mainMenuForm.SwitchToForm(mathGameForm));
|
2024-12-14 13:32:15 +04:00
|
|
|
|
mainMenu.AddOption("About me", () => mainMenuForm.SwitchToForm(aboutMeForm));
|
2024-12-22 12:19:30 +04:00
|
|
|
|
mainMenu.AddOption("Array sort", () => { arrayGUI = new ArraySortGUI(mainMenuForm); mainMenuForm.SwitchToForm(arrayGUI); });
|
2024-11-29 15:35:19 +04:00
|
|
|
|
mainMenu.AddOption("Snake game", () => {
|
2024-12-14 12:09:33 +04:00
|
|
|
|
mainMenuForm.Hide();
|
|
|
|
|
snakeDiffMenuForm.Show();
|
2024-11-29 15:35:19 +04:00
|
|
|
|
});
|
|
|
|
|
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);
|
|
|
|
|
|
2024-12-14 11:21:47 +04:00
|
|
|
|
mainMenuForm = new MenuForm(mainMenu);
|
2024-12-14 12:09:33 +04:00
|
|
|
|
snakeDiffMenuForm = new MenuForm(difficultyMenu, () => { snakeDiffMenuForm.SwitchToForm(snakeSizeMenuForm); });
|
|
|
|
|
snakeSizeMenuForm = new MenuForm(sizeMenu, () =>
|
|
|
|
|
{
|
2024-12-14 13:32:15 +04:00
|
|
|
|
snakeSizeMenuForm.Hide();
|
2024-12-22 11:40:58 +04:00
|
|
|
|
snakeForm = new SnakeForm(difficulty, sizex, sizey, mainMenuForm);
|
|
|
|
|
snakeForm.Show();
|
2024-12-14 12:09:33 +04:00
|
|
|
|
});
|
2024-12-14 11:21:47 +04:00
|
|
|
|
|
2024-12-14 13:32:15 +04:00
|
|
|
|
aboutMeForm = new AboutMeForm(mainMenuForm);
|
2024-12-14 14:49:42 +04:00
|
|
|
|
mathGameForm = new MathGameForm(mainMenuForm);
|
2024-12-14 13:32:15 +04:00
|
|
|
|
|
2024-12-14 11:21:47 +04:00
|
|
|
|
Application.Run(mainMenuForm);
|
|
|
|
|
|
|
|
|
|
|
2024-11-29 15:35:19 +04:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static void PrintAboutMe()
|
|
|
|
|
{
|
|
|
|
|
const string aboutme = @"Морозов Иван Сергеевич 6106 aka DIvan2000
|
|
|
|
|
Website: divan2000.su";
|
|
|
|
|
Console.WriteLine(aboutme);
|
|
|
|
|
}
|
|
|
|
|
private static void Exit()
|
|
|
|
|
{
|
2024-12-22 11:40:58 +04:00
|
|
|
|
Dialogs.Exit();
|
2024-11-29 15:35:19 +04:00
|
|
|
|
}
|
|
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|