Приставки
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
Команда Новости Помощь Ссылки
ПОМОЩЬ
Литература про игры
Предыдущая Следующая

150 Подсчет очков и вывод текста на экран

Работа с текстом 151

7 7.7. Подсчет очков

Продолжаем улучшать игру, а в качестве базового проекта используем последний проект из десятой главы. В этой главе не будет создано два отдельных проекта по каждой теме, поскольку схематика подсчета очков вносит незначительные изменения в общий исходный код игры. Поэтому был сделан всего один проект под общим названием Font. Все изменения при подсчете очков касаются только основного класса Gamel. В работе с текстом добавится дополнительный класс BitmapFont, но об этом подробнее вы узнаете во второй части этой главы. Как всегда, исходный код этого проекта вы найдете на компакт-диске в папке Code\Chaper11\Font.

Как мы уже выяснили, любой подсчет очков определяет всю игровую стратегию. В нашем случае за каждый пойманный объект будет начисляться одно очко, иначе говоря, мы будем вести простой подсчет пойманных предметов. Для подсчета очков по каждому падающему объекту нам понадобится отдельная целочисленная переменная.

Переходим к работе над проектом и в классе Gamel в области глобальных переменных класса Gamel объявим пять новых переменных.

int scoreO, scorel, score2, score3, score4;

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

// Обнуляем имеющиеся очки

scoreO = 0;

scorel = 0;

score2 = O;

score3 = 0;

score4 = 0;

Теперь мы имеем пять переменных для каждого падающего с неба объекта. Чтобы начислить одно очко за каждый пойманный объект или подсчитать количество пойманных объектов, нам необходимо при столкновении платформы с одним из объектов увеличить соответствующую перемену. Посмотрите на исходный код обработки столкновения для падающего с неба объекта под номером два.

if (bbplatform.Intersects(bb[2])) {

sprite[2].spritePosition = new Vector2(rand.Next(10, Window.ClientBounds.Width -

300 - sprite[2].spriteTexture.Width / 12), -500); score2 += 1;

}

В этом коде видно, что как только платформа сталкивается с объектом или происходит пересечение двух ограничивающих прямоугольников, значение переменной score2 увеличивается на единицу. Для этого используется упрощенный вариант увеличения значения на единицу, но если развернуть эту строку кода, то она выглядит вот так:

score2 = score2 + 1;

Точно такой же подход в подсчете очков необходимо использовать и для оставшихся четырех объектов (см. листинг 11.1). Кстати, если вашей целью является только подсчет падающих предметов, то в коде можно создать массив данных для подсчета очков (если нужно считать очки по каждому объекту) или выделить одну переменную для общего подсчета всех очков.


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

Горяченькое

Друзья

Hosted by uCoz