Управление скоростью движения объекта
Управление скоростью движения объекта
Рассматривая поведение программы, вам, вероятно, хотелось бы ускорить процесс движения объекта. Чтобы игра была динамичной и увлекательной, нужно постепенно увеличивать сложность игрового процесса для пользователя. Одним из таких способов является ускорение движения. На данный момент кусочек сыра проходит расстояние от одного угла до другого за 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 не отслеживаются. Это может привести к ситуации, когда пользователь будет постоянно уменьшать скорость и значение скорости может стать отрицательным. В этом случае движение объекта будет совсем не таким, как это планировал разработчик. А при значительном увеличении скорости движение изображения теряет гладкость.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Процессы, ограниченные скоростью ввода-вывода и скоростью процессора
Процессы, ограниченные скоростью ввода-вывода и скоростью процессора Процессы можно классифицировать как те, которые ограничены скоростью ввода-вывода (I/O-bound), и те, которые ограничены скоростью процессора (processor-bound). К первому типу относятся процессы, которые большую
Понятия объекта и экземпляра объекта
Понятия объекта и экземпляра объекта В начале этой главы мы познакомились с типами данных, определяющими саму природу данных и набор действий, которые можно выполнять с этими данными. Так, строковый тип определяет, что данные этого типа представляют собой строки —
Понятия объекта и экземпляра объекта
Понятия объекта и экземпляра объекта В начале этой главы мы познакомились с типами данных, определяющими саму природу данных и набор действий, которые можно выполнять с этими данными. Так, строковый тип определяет, что данные этого типа представляют собой строки —
Урок № 26. Справочник статей движения денежных средств
Урок № 26. Справочник статей движения денежных средств Содержимое справочника статей движения денежных средств позволяет детализировать ведение учета по счетам 50 "Касса", 51 "Расчетные счета", 52 "Валютные счета" и 55 "Специальные счета в банках". Также оно используется для
Шутка №1 — ограничение диапазона движения мыши
Шутка №1 — ограничение диапазона движения мыши Итак, первая шутка заключается в наложении ограничения на диапазон движения мыши:сurs:= Rect(0, 0, Screen.Width div 2, Screen.Height);ClipCursor(@curs);После этого указатель мыши можно будет перемещать только в одной половине
7.6. Практическое задание. Анимация движения автомобиля
7.6. Практическое задание. Анимация движения автомобиля Анимировать движение автомобиля можно различными способами – начиная с ключевых кадров и контроллеров и заканчивая модулем reactor. Причем с помощью модуля reactor анимацию можно выполнить двумя способами: используя для
ФМ-ВЕЩАНИЕ: Информация со скоростью пинга
ФМ-ВЕЩАНИЕ: Информация со скоростью пинга Автор: Феликс МучникWeb новой версии то ли еще будет бог знает когда, то ли уже здесь, рядом с нами. Как мне кажется, он быстро несет нас на своих крыльях к очередному информационному взрыву. Да, конечно, то же самое говорили при
5.7. Съемка движения
5.7. Съемка движения Движение, остановленное на фотокадре, может выглядеть интересно и эффектно. Основное правило съемки быстро движущихся объектов – короткая выдержка (1/125 или даже 1/250 секунды).• Чтобы установить минимальную выдержку из возможных в данной ситуации, можно
19.6. Эффект движения
19.6. Эффект движения Если фотографировать объекты в движении, то на снимках они обычно получаются размытыми. По этой размытости, как правило, и можно с первого взгляда определить, что объект, изображенный на фотографии, двигался в момент съемки. Но эффект движения можно
Движения произвольных фигур
Движения произвольных фигур Чтобы понять необходимость в отложенных процедурах и классах, снова рассмотрим иерархию фигур FIGURE. Рис. 14.8. Снова иерархия FIGUREНаиболее общим понятием здесь является FIGURE. Основываясь на механизмах полиморфизма и динамического связывания,
Создание простейшего движения
Создание простейшего движения Откроем документ, содержащий созданный нами фильм "Деление клетки". И разобьем его на две сцены — так нам будет проще (о сценах см. главу 11).Первая сцена будет содержать титры с названием фильма и носить "говорящее" название название. Для
Параметры движения
Параметры движения Настала пора рассмотреть поближе панель Properties и все ее элементы управления, доступные в том случае, если выделен любой из кадров анимации (рис. 12.4). В верхнем левом углу панели Properties находится поле ввода Frame. С его помощью мы можем задать уникальное имя
Суд по делам дорожного движения
Суд по делам дорожного движения Наверное каждый, кто получал квитанцию штрафа за превышение скорости, наиву мечтал о каком-нибудь способе это преодолеть. Но не хождением в школу дорожного движения, или просто расплачиваясь по указанной сумме, или получить шанс убедить