static void Main(string[] args) { Console.SetWindowSize(62, 23); Console.CursorVisible = false; if (File.Exists("savemenu.xml") == true) { menu = menu.Deserialize(); } while (total) { if (mod) { Console.Clear(); int cursor = 0; menu.Draw(cursor); while (true) { ConsoleKeyInfo kek = Console.ReadKey(); if (kek.Key == ConsoleKey.UpArrow) { cursor--; if (cursor == -1) { cursor = 3; } menu.Draw(cursor); } if (kek.Key == ConsoleKey.DownArrow) { cursor++; if (cursor == 4) { cursor = 0; } menu.Draw(cursor); } if (kek.Key == ConsoleKey.Enter) { if (cursor % 4 == 0) { mod = false; menu.Hello(); Console.Clear(); wall.Make(level); fruit.Make(snake, wall); level.Draw(); score.Draw(); wall.Draw(); snake.Draw(); thread = new Thread(Threadgame); thread.Start(); break; } if (cursor % 4 == 1) { mod = false; level = level.Deserialize(); score = score.Deserialize(); snake = snake.Deserialize(); wall = wall.Deserialize(); fruit = fruit.Deserialize(); Console.Clear(); level.Draw(); score.Draw(); snake.Draw(); wall.Draw(); fruit.Draw(); thread = new Thread(Threadgame); thread.Start(); break; } if (cursor % 4 == 2) { Console.Clear(); menu.Score(); Console.ReadKey(); Console.Clear(); menu.Draw(cursor); } if (cursor % 4 == 3) { gameover = true; total = false; break; } } } } else { ConsoleKeyInfo key = Console.ReadKey(); switch (key.Key) { case ConsoleKey.UpArrow: direction = 1; break; case ConsoleKey.DownArrow: direction = 2; break; case ConsoleKey.LeftArrow: direction = 3; break; case ConsoleKey.RightArrow: direction = 4; break; case ConsoleKey.S: level.Serialize(level); score.Serialize(score); snake.Serialize(snake); wall.Serialize(wall); fruit.Serialize(fruit); break; } } } }
static void Threadgame() { while (!gameover) { switch (direction) { case 1: if (!(snake.body.Count != 1 && snake.body[0].x - snake.body[1].x == 0 && snake.body[0].y - snake.body[1].y == 1)) { snake.Move(0, -1); } break; case 2: if (!(snake.body.Count != 1 && snake.body[0].x - snake.body[1].x == 0 && snake.body[0].y - snake.body[1].y == -1)) { snake.Move(0, 1); } break; case 3: if (!(snake.body.Count != 1 && snake.body[0].x - snake.body[1].x == 1 && snake.body[0].y - snake.body[1].y == 0)) { snake.Move(-1, 0); } break; case 4: if (!(snake.body.Count != 1 && snake.body[0].x - snake.body[1].x == -1 && snake.body[0].y - snake.body[1].y == 0)) { snake.Move(1, 0); } break; } snake.Draw(); wall.Draw(); if (snake.Collision(snake, wall)) { menu.Rewrite(score); menu.Serialize(menu); Console.Clear(); Console.ForegroundColor = ConsoleColor.DarkYellow; Console.SetCursorPosition(26, 7); Console.WriteLine("GAME OVER"); gameover = true; mod = true; thread.Abort(); break; } if (snake.Eat(fruit)) { score.score++; score.Draw(); if (snake.Newlevel(score)) { Console.Clear(); level.lvl++; level.Draw(); score.Draw(); wall.Make(level); snake = new Snake(); } fruit.Make(snake, wall); } Thread.Sleep(30); } }