// Координаты касания и другие необходимые параметры
int tapY = (int)gesture.Position.Y;
int tapX = (int)gesture.Position.X;
<…>
switch (gesture.GestureType)
{
// Если жест является нажатием:
case GestureType.Tap:
<…>
break;
<…>
// Если жест является перетягиванием:
case GestureType.FreeDrag:
<…>
break;
}
}
Нажатия на аппаратные кнопки
Обработка нажатий на аппаратные кнопки тоже важна, однако в приложении запрещено использовать их для нестандартных функций (например, аппаратную кнопку назад для установления паузы).
Одним из требований к приложениям и играм является то, что необходимо программировать действия для аппаратной кнопки назад таким образом, что после нажатия на нее показывается предыдущий модуль игры (не относится к игровым уровням), пример:
Меню – Список уровней – Уровень 1 – Уровень 2
Из любого уровня переход назад осуществляется в Список уровней, даже если новый уровень запускался после предыдущего, из Списка уровней соответственно в Меню, из Меню же происходит выход из приложения:
if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
{
if (Mode == GameMode.Menu)
{
this. Exit ();
}
else if (Mode == GameMode.Levels)
{
Mode = GameMode.Menu;
}
else if (Mode == GameMode.Level_1)
{
Mode = GameMode. Levels;
}
else if (Mode == GameMode.Level_2)
{
Mode = GameMode.Levels;
}
}
Создание игровых модулей рассмотрено в соответсвующем разделе.
Работа с таймером
Некоторые игры требуют работу со временем и выводом некоторого таймера на экран. Пример:
Необходимые переменные:
// Время игры, промежуточное время
int time, tempTime;
// Время в представлении ЧЧ:ММ:СС
string timeString;
В методе Update(GameTime gameTime) указываем: