Программирование для мобильных платформ. Windows Phone - страница 5

Шрифт
Интервал


Одним из требований к приложениям и играм является то, что необходимо программировать действия для аппаратной кнопки назад таким образом, что после нажатия на нее показывается предыдущий модуль игры (не относится к игровым уровням), пример:

Меню – Список уровней – Уровень 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) указываем:

if (tempTime < (int)gameTime.TotalGameTime.TotalSeconds)

{

time++;

}

// Приведение времени в формат ЧЧ:ММ:СС

GetTime(time);

tempTime = (int)gameTime.TotalGameTime.TotalSeconds;

Создаем метод GetTime(int timeTemp):

public void GetTime(int timeTemp)

{

if (timeTemp/ 3600 < 10)

{

timeString = "0" + (timeTemp/ 3600).ToString() + ":";

}

else if (timeTemp/ 3600 >= 10)

{

timeString = (timeTemp/ 3600).ToString() + ":";

}

else if (timeTemp/ 3600 < 1)

{

timeString = "00:";

}

if ((timeTemp% 3600) / 60 < 10)

{

timeString = timeString + "0" + ((timeTemp% 3600) / 60).ToString() + ":";

}

else if ((timeTemp% 3600) / 60 >= 10)

{

timeString = timeString + ((timeTemp% 3600) / 60).ToString() + ":";

}

else if ((timeTemp% 3600) / 60 < 1)

{

timeString = timeString + "00:";

}

if ((timeTemp% 3600) % 60 < 10)

{

timeString = timeString + "0" + ((timeTemp% 3600) % 60).ToString();

}

else if ((timeTemp% 3600) % 60 >= 10)

{

timeString = timeString + ((timeTemp% 3600) % 60).ToString ();

}

else if ((timeTemp% 3600) % 60 < 1)

{

timeString = timeString + "00";

}

}

В методе Draw(GameTime gameTime) выводим время на экран:

spriteBatch. DrawString (Шрифт, timeString, new Vector2 (координата_x, координата_y), Color. Цвет);