Предыдущая Следующая
22.6. Добавим в игру логику
{
world = Matrix.CreateTranslation(ball[i].position); ball[i].DrawModel(world, view, proj);
world = Matrix.CreateTranslation(stadium.position); stadium.DrawModel(world, view, proj);
spriteBatch.Begin(SpriteBlendMode.AlphaBlend);
cursor.DrawSprite(spriteBatch);
spriteBatch.End();
break;
}
case CurentGameState.GameOverScreen:
break;
}
case CurentGameState.VictoryScreen:
Закончив проект Menu, мы переходим к краткому обзору финальной версии игры. Полный исходный код игры «Футбольный стрелок» вы найдете на компакт-диске в папке Code\Final3d\Football_arrows.
Смысл всей игры заключается в том, чтобы не дать мячикам упасть на футбольное поле, но стрелять по мячам можно до бесконечности. Поэтому ключом для окончания уровня будут служить двадцать точных попаданий в каждый мяч. То есть игроку на одном уровне необходимо попасть в каждый мяч как минимум двадцать раз, и при этом ни один из мячей за это время не должен коснуться земли.
Если мяч касается земли, то игра останавливается и пользователю будет предложено пройти текущий уровень заново. Самое интересное заключается в том, что по истечении двадцати попаданий в один мяч этот самый мяч по-прежнему будет падать вниз, и его по-прежнему нужно будет поддерживать на весу. Таким образом, все мячики остаются активными в сцене на протяжении уровня, что придаст игре динамику.
Подсчет попаданий в каждый мячик мы будем вести на табло (рис. 22.6). Это табло размещается в левом верхнем углу экрана с небольшим отступом от его краев (по 20 пикселей для каждой оси). В табло нарисованы три мяча, которые соответствуют по цвету мячам, используемым в игре. Каждое попадание в мяч увеличит счетчик на единицу, и над каждым мячом будет рисоваться текущее количество попаданий в цель. По достижении цифры двадцать для одного или более мячей на табло дополнительно будет выводиться крестик, который рисуется как раз поверх одного из мячей (рис. 22.6). В результате игрок будет знать, какой из мячей ему нужно подбивать меньше и на каких мячах необходимо сосредоточить свое внимание. Дополнительно в нижней части выводится текущий уровень игры. На каждом новом уровне мы будем увеличивать скорость падения мячей.
Для контроля окончания игры по причине выигрыша уровня используется следующая конструкция кода.
if (scoreO >= 20 && scorel >= 20 && score2 >= 20) {
gameState = CurentGameState.VictoryScreen; level += 1; Предыдущая Следующая
|