private static void Main(string[] args) { Console.BackgroundColor = ConsoleColor.White; for (int i = 0; i < 20; i++) { Console.CursorLeft = 0; Console.CursorTop = i; Console.WriteLine("0"); } for (int i = 1; i < 12; i++) { Console.CursorLeft = i; Console.CursorTop = 19; Console.WriteLine("0"); } for (int i = 0; i < 20; i++) { Console.CursorLeft = 11; Console.CursorTop = i; Console.WriteLine("0"); } Console.BackgroundColor = ConsoleColor.Black; Field f = new Field(12, 20); f.NewFig(); 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.Fig.CheckDown(f)) { f.Move(); } else { while (true) { bool flag = f.CheckLine(); if (flag == false) break; } f.NewFig(); if (f.Fig.IsAtBottom(f) == true) break; } for (int i = 0; i < 10 - f.Level; i++) //количество итераций цикла имитирует скорость { System.Threading.Thread.Sleep(50); if (Console.KeyAvailable) { cki = Console.ReadKey(); switch (cki.Key) { case ConsoleKey.UpArrow: //стрелка вверх { if (!f.Fig.IsCanRotate(f)) break; 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 GAME OVER"); Console.WriteLine("\n TOTAL SCORES " + (f.Level*1000 + f.Scores) + "\n\n\n\n\n\n\n\n\n"); Console.ReadLine(); }
private static void Main(string[] args) { Console.BackgroundColor = ConsoleColor.White; for (int i = 0; i < 20; i++) { Console.CursorLeft = 0; Console.CursorTop = i; Console.WriteLine("0"); } for (int i = 1; i < 12; i++) { Console.CursorLeft = i; Console.CursorTop = 19; Console.WriteLine("0"); } for (int i = 0; i < 20; i++) { Console.CursorLeft = 11; Console.CursorTop = i; Console.WriteLine("0"); } Console.BackgroundColor = ConsoleColor.Black; Field f = new Field(12, 20); f.NewFig(); 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.Fig.CheckDown(f)) { f.Move(); } else { while (true) { bool flag = f.CheckLine(); if (flag == false) { break; } } f.NewFig(); if (f.Fig.IsAtBottom(f) == true) { break; } } for (int i = 0; i < 10 - f.Level; i++) //количество итераций цикла имитирует скорость { System.Threading.Thread.Sleep(50); if (Console.KeyAvailable) { cki = Console.ReadKey(); switch (cki.Key) { case ConsoleKey.UpArrow: //стрелка вверх { if (!f.Fig.IsCanRotate(f)) { break; } 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 GAME OVER"); Console.WriteLine("\n TOTAL SCORES " + (f.Level * 1000 + f.Scores) + "\n\n\n\n\n\n\n\n\n"); Console.ReadLine(); }