public override void Play() { Frame frame = new Frame(); Field f = new Field(); frame.SetFrame(); f.NewFigure(); f.DrawField(); //створення обєктів подій для клавіатури EventUp up = new EventUp(); //вверх EventDown down = new EventDown(); //вниз EventLeft left = new EventLeft(); // вліво EventRight right = new EventRight(); //вправо //<КлассИлиОбъект>.<ИмяСобытия> += <КлассЧейМетодДолженЗапуститься>.<МетодПодходящийПоСигнатуре> up.UpEvent += f.UpFig; down.DownEvent += f.DownFig; left.LeftEvent += f.LeftFig; right.RightEvent += f.RightFig; ConsoleKeyInfo cki; while (true) { if (f.CheckDown() == true) f.Move(); else { while (true) { bool flag = f.CheckLine(); if (flag == false) break; } f.NewFigure(); if (f.IsAtBottom() == true) break; } int dificulty = 11 - 2 * f.Level; for (int i = 0; i < dificulty; i++) //кількість ітерацій імітує швидкість { System.Threading.Thread.Sleep(50); if (Console.KeyAvailable) { cki = Console.ReadKey(); switch (cki.Key) { case ConsoleKey.UpArrow: //перевертає фігуру { up.UpUserEvent(); //обробка події f.DrawField(); //перерисовує поле break; } case ConsoleKey.DownArrow: { down.DownUserEvent(); break; } case ConsoleKey.LeftArrow: { left.LeftUserEvent(); f.DrawField(); break; } case ConsoleKey.RightArrow: { right.RightUserEvent(); f.DrawField(); break; } default: { break; } } } } } Console.Clear(); Console.WriteLine("\n\n\n\n\n GAME OVER"); Console.WriteLine("\n TOTAL SCORES " + (f.Level * 1000 + f.Score) + "\n\n\n\n\n\n\n\n\n"); Console.WriteLine("Press any key"); Console.ReadLine(); }