private static void NewGame() { Console.Clear(); Score score = new Score(); score.Show(); Frame frame = new Frame(Config.FIELD_WIDTH, Config.FIELD_HEIGHT); frame.Draw(); Point position = new Point(Config.SNAKE_START_POSITION_X, Config.SNAKE_START_POSITION_Y, Config.SYMBOL_SNAKE); Snake snake = new Snake(position, Config.SNAKE_START_LENGTH, Config.SNAKE_START_DIRECTION); snake.Draw(); Food food = new Food(); food.GenerateFood(snake); food.Draw(); while (true) { if (snake.hannibal() || snake.bump(frame)) { Console.SetCursorPosition(0, Config.FIELD_HEIGHT - 1); GameOver(score.result); break; } if (snake.eat(food)) { food.GenerateFood(snake); food.Draw(); score.Inc(); score.Show(); } else { snake.Move(); } if (Console.KeyAvailable) { ConsoleKeyInfo key = Console.ReadKey(true); if (snake.HandleKey(key.Key)) { Score.ShowPause(); key = Console.ReadKey(true); snake.HandleKey(key.Key); Score.HidePause(); } } Thread.Sleep(Config.REFRESH_SPEED); } }
public Boolean Eat(ref Food Object, Graphics Target, int pX, int pY) //If First element of the Snake meets food element { if (Body[Lenght - 1].X == Object.X && Body[Lenght - 1].Y == Object.Y) { Piece Another = new Piece(Body[Lenght - 1].X + pX, Body[Lenght - 1].Y + pY); AddSegment(Another); Another.PointParametersChange(Target, blackPen, 0, 0); Object.GenerateFood(); Object.PointParametersChange(Target, redPen, 0, 0); return(true); } return(false); }
public void NewGame() //Starting new game { GameOver = false; Score = 0; _Speed = 0; _Level = 1; Piece First = new Piece(13, 13); Piece Last = new Piece(23, 13); Body.AddSegment(First); Body.AddSegment(Last); Food.GenerateFood(); Food.PointParametersChange(_Target, redPen, 0, 0); }
// Проверка позиции змейки на столкновение. Возварщает true если не произошло столкновения со стеной, false если змейка столкнулась со стеной public bool CheckPosition() { bool cont = true; if (HasSamePosition(snake.Points[0], food.Points[0])) // Если змейка сталкивается с едой - увеличть змейка и переместить еду { snake.Points.Add(new Point(snake.Points[0].sign, snake.Points[snake.Points.Count - 1].X, snake.Points[snake.Points.Count - 1].Y)); food.GenerateFood(new List <Objects> { snake, walls }); IntFace.PointsUp(walls.LevelName); // Увеличить количество очков на 1 } else if (CollidesWith(snake.Points[0], walls) || CollidesWith(snake.Points[0], snake)) // Если змейка сталкивается с едой, то вывести "Конец игры" { snake.Death(); IntFace.GameOver(); Stop(); cont = false; } return(cont); }