Приставки
Nintendo (Dendy)
Nintendo 64
Sega Genesis
Sega CD / 32x
Master System
Super Nintendo
Turbo Grafx 16
Sega Saturn
Sony PlayStation
GameBoy Advance
GameBoy / Color
Game Gear
Atari
Другие

Утилиты
Системные утилиты
GoodXXXX
Sega CD / 32x
Nintendo 64
Переводы, хакинг
Музыка

Мир приставочных игр

Версия 2.00a

Leonis © 2002-2009
Команда Новости Помощь Ссылки
ПОМОЩЬ
Литература про игры
Предыдущая Следующая

Menu menu;

private bool menuState; private int cursorState;

После этих объявлений переходим в конструктор класса Gamel, где создаем полноценный объект menu класса Menu и инициализируем обе переменные.

menu = new Menu(); menuState = true; cursorState = 1;

Переменная menuState при запуске игры получает значение true, поэтому первым делом на экран будет выводиться меню игры. В свою очередь, переменная cursorState равна 1, а значит, в игре изначально активируется табличка с надписью Игра. Далее в методе LoadGraphicsContent() мы загружаем всю игровую графику, включая меню.

В предыдущих версиях игры в методе Initialize() класса Gamel мы определяли все игровые позиции объектов. Сейчас также можно использовать этот метод, но был реализован улучшенный механизм, в частности создан отдельный метод NewGame(), исходный код которого выглядит следующим образом:

/// <summary>

/// Новая игра

/// <summary>

public void NewGame()

{

j = 0;

for (int i = 0; sprite.Length > i;

{

sprite[i].spritePosition = new Vector2(rand.Next(l0, Window.ClientBounds.Width - l50), j = j - 300);

}

platform.spritePosition = new Vector2(Window.ClientBounds.Width/ 2, Window.ClientBounds.Height - 90); score0 = 0; scorel = 0; score2 = 0;

222 Создаем игровое меню

зсогеЗ = 0; score4 = 0; base.Initialize();

}

Зачем это нужно? Дело в том, что нам необходимо реализовать обратный старт игры в момент, когда пользователь выйдет из игры в меню и потом захочет опять начать игру сначала. Для этих целей и создается метод NewGame(). Вызов этого метода будет происходить непосредственно в меню игры, и каждый раз, когда пользователь выходит в меню, а потом вновь запускает игру, происходит установка объектов на новые игровые позиции.

Исходный код метода NewGame() почти не претерпел изменений, за исключением того, что переменная j, увеличивающая координату по отрицательной оси Y, инициализируется именно в этом методе нулевым значением. Сделано это по одной причине. Как вы знаете, переменная j помогает нам удалить друг от друга спрайты по вертикали на 300 пикселей. Каждое ее увеличение будет содержать большое отрицательное значение, например для пяти спрайтов это значение будет равно -1500 пикселей. Если пользователь зайдет в игру, потом выйдет в меню, а затем опять вернется в игру, то переменная j по-прежнему будет содержать значение в -1500 пикселей и установка игровых объектов будет происходить от этого значения.

В результате при повторном старте игры пользователю придется подождать, пока на экране появится первый спрайт, а при третьем или даже десятом старте игры на это уйдет еще больше времени. Поэтому при каждом новом вызове метода NewGame() необходимо обнулять все игровые переменные. Учтите этот нюанс во всех ваших последующих играх. Каждый новый старт игры должен обязательно обнулять все предыдущие игровые состояния, если, конечно, не предусмотрена система сохранения игры или перехода на новый уровень.


Предыдущая Следующая

Горяченькое

Друзья

Hosted by uCoz