Книга: Программирование КПК и смартфонов на .NET Compact Framework
Управление скоростью движения объекта
Разделы на этой странице:
Управление скоростью движения объекта
Рассматривая поведение программы, вам, вероятно, хотелось бы ускорить процесс движения объекта. Чтобы игра была динамичной и увлекательной, нужно постепенно увеличивать сложность игрового процесса для пользователя. Одним из таких способов является ускорение движения. На данный момент кусочек сыра проходит расстояние от одного угла до другого за 5 секунд. Увеличить скорость перемещения картинки очень просто. Достаточно увеличивать значение текущей позиции объекта не на один пиксел, а на несколько. Нужно объявить новые переменные xSpeed
и ySpeed
, которые будут отвечать за увеличение или уменьшение скорости движения объекта. Соответствующий код приведен в листинге 11.9.
Листинг 11.9
/// <summary>
/// Скорость движения сыра по горизонтали
/// </summary>
private int xSpeed = 1;
/// <summary>
/// Скорость движения сыра по вертикали
/// </summary>
private int ySpeed = 1;
private void updatePositions() {
if (goingRight) {
cx += xSpeed;
} else {
cx -= xSpeed;
}
if ((cx + cheeseImage.Width) >= this.Width) {
goingRight = false;
}
if (cx <= 0) {
goingRight = true;
}
if (goingDown) {
cy += ySpeed;
} else {
cy -= ySpeed;
}
if ((cy + cheeseImage.Height) >= this.Height) {
goingDown = false;
}
if (cy <= 0) {
goingDown = true;
}
}
Изменяя значения переменных xSpeed
и ySpeed
, мы можем по своему желанию увеличивать или уменьшать скорость движения кусочка сыра. Для этого надо создать новую функцию, код которой приведен в листинге 11.10.
Листинг 11.10
private void changeSpeed(int change) {
xSpeed += change;
ySpeed += change;
}
Теперь можно вызывать этот метод для изменения скорости движения изображения. Для уменьшения скорости надо передавать в функцию отрицательные значения. Чтобы управлять скоростью во время игры, можно использовать клавиши Soft Key
, расположенные под экраном.
Следует создать простое меню, содержащее команды Быстрее
и Медленнее
. Если пользователь нажмет на левую кнопку, то скорость движения сыра будет увеличиваться. При нажатии на правую кнопку скорость уменьшится. Соответствующий код приведен в листинге 11.11.
Листинг 11.11
private void menuItem1_Click(object sender, System.EventArgs e) {
changeSpeed(1);
}
private void menuItem2_Click(object sender, System.EventArgs e) {
changeSpeed(-1);
}
В данной ситуации значения в методе changeSpeed
не отслеживаются. Это может привести к ситуации, когда пользователь будет постоянно уменьшать скорость и значение скорости может стать отрицательным. В этом случае движение объекта будет совсем не таким, как это планировал разработчик. А при значительном увеличении скорости движение изображения теряет гладкость.
- Начало работы
- Добавление изображения в программу
- Использование встроенных ресурсов
- Вывод картинки на экран
- Создание анимации
- Отражения
- Управление скоростью движения объекта
- Добавляем новый объект
- Устранение мерцания
- Хлеб — всему голова
- Обнаружение столкновений
- Столкновения батона и мяча
- Новые объекты
- Размещение помидоров
- Уничтожение томатов
- Счет игры
- Ведение счета
- Звуковые эффекты
- Дальнейшие улучшения
- И опять добавляем новые объекты
- Управление таблицей результатов
- Переключение между формами
- Отображение дочернего окна
- Получение имени игрока
- Хранение лучших результатов
- Улучшение графики
- Спрайты
- Практическая работа 53. Запуск Access. Работа с объектами базы данных
- 6.2. Типичные ошибки при проведении программ продвижения и варианты их устранения
- УПРАВЛЕНИЕ РЕПУТАЦИЕЙ В ИНТЕРНЕТЕ
- Глава 7 Управление хранилищем данных
- Глава 11 Корпоративное управление и стратегия
- 5.7 Устройства NAS под управлением Windows и моментальные снимки
- 7.8 Управление иерархическим хранилищем
- Управление файлами занятий
- Управление пользователями и разрешениями узла
- Управление функциями узла
- Управление объединением содержимого узлов
- Использование панели задач Управление документами в приложениях Office 2007