Предыдущая Следующая
}
Метод MovePlatform() состоит из двух независимых блоков исходного кода. В первом блоке происходит обработка нажатий клавиш с командами Влево и Вправо. Для обработки событий, получаемых с клавиатуры, используются конструкция кода if/else и метод IsKeyDown(). В переводе на русский язык эта конструкция обозначает следующее:
Если нажата клавиша Влево, то:
Позиция платформы по оси X уменьшается на 10 пикселей А если нажата клавиша Вправо, то:
Позиция платформы по оси X увеличивается на 10 пикселей
Уменьшение или увеличение позиции по оси X приводит к движению платформы по горизонтали влево и вправо. Заданная скорость в размере 10 пикселей за один кадр тестировалась много раз в игре и оказалась наиболее удачным значением.
Второй блок исходного кода обрабатывает ситуацию в столкновении платформы с левой и правой частями экрана. Если такое столкновение имеет место, то по оси X спрайту присваиваются значения, равные соответственно левой и правой кромкам экрана (в правой части мы не забываем о размере рамки). То есть спрайт при столкновении с двумя крайними точками экрана остается на месте без движения. Делается это для того, чтобы платформа не уезжала из нашей области видимости и все время оставалась на экране.
Метод MovePlatform() вызывается в методе Update() класса Game1, где происходит постоянное обновление состояния игры. В конце исходного кода класса Game1 в методе Draw() платформа рисуется на экране. Поскольку позиция платформы platform.spritePosition постоянно меняется, то в методе Draw() платформа перерисовывается постоянно в новом месте. Полный исходный код класса Game1 представлен в листинге 9.1. На компакт-диске рассмотренный пример находится в папке Code\Chapter9\ Platform.
//=========================================================================
/// <summary>
/// Листинг 9.1
/// Исходный код к книге:
/// "Программирование компьютерных игр под Windows в XNA Game Studio Express" /// Автор книги: Горнаков С. Г. /// Глава 9
128 Устройства ввода
Проект Platform 129
/// Проект: Platform /// Класс: Gamel /// Добавляем платформу /// <summary>
//=========================================================================
#region Using Statements using System;
using System.Collections.Generic; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Audio; using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Input; using Microsoft.Xna.Framework.Storage; #endregion Предыдущая Следующая
|