95 lines
3.2 KiB
C#

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;
static SnakeForm snakeForm;
static ArraySortGUI arrayGUI;
[STAThread] // Требуется для Windows Forms
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
int sizex = 20;
int sizey = 20;
SnakeForm.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 = SnakeForm.Level.Low; });
difficultyMenu.AddOption("Medium", () => { difficulty = SnakeForm.Level.Medium; });
difficultyMenu.AddOption("Hard", () => { difficulty = SnakeForm.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", () => { arrayGUI = new ArraySortGUI(mainMenuForm); mainMenuForm.SwitchToForm(arrayGUI); });
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();
snakeForm = new SnakeForm(difficulty, sizex, sizey, mainMenuForm);
snakeForm.Show();
});
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()
{
Dialogs.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;
}
}
}
}