private void MoveSnake() { // Удаление последней зачти змеи и подготова новой части while (snakeParts.Count >= snakeLength) { GameArea.Children.Remove(snakeParts[0].UiElement); snakeParts.RemoveAt(0); } // Добавляем новый эемент змеи (голову) // Все существующие элементы помечаем как тело foreach (SnakePart snakePart in snakeParts) { (snakePart.UiElement as Rectangle).Fill = snakeBodyBrush; snakePart.IsHead = false; } // Определение, в какую сторону развернуть змею SnakePart snakeHead = snakeParts[snakeParts.Count - 1]; //Определение головы double nextX = snakeHead.Position.X; double nextY = snakeHead.Position.Y; switch (snakeDirection) { case SnakeDirection.Left: nextX -= SnakeSquareSize; break; case SnakeDirection.Right: nextX += SnakeSquareSize; break; case SnakeDirection.Up: nextY -= SnakeSquareSize; break; case SnakeDirection.Down: nextY += SnakeSquareSize; break; } //Добавление голову в список элементов змеи snakeParts.Add(new SnakePart() { Position = new Point(nextX, nextY), IsHead = true }); DrawSnake(); //Рисование змеи DoCollisionCheck(); //Проверка столкновения с объектами } //Обработка движения змеи