Архивы: по дате | по разделам | по авторам

DiNGS – программирование игр в домашних условиях. Часть 12

АрхивПрограммазм (архив)
автор : Александр Супрунов   26.03.2003

Эффекты: вращение-увеличение

В DiNGS эффекты вращения (ротации) и увеличения-уменьшения (зуминга или скалинга) можно объединить, что делает код игры прозрачней для понимания. Для этого используется команда ROTOZOOMSPRITE, после которой указывается несколько параметров – координаты, угол поворота, размер и степень прозрачности. Пример:

LOADSPRITE “priz.bmp”,0

WHILE TRUE
ROTOZOOMSPRITE 0, 100,100, 45, 200,0
SHOWSCREEN
WEND

Таким образом, мы выведем спрайт в координаты x:100, y:100, повернутым на 45 градусов и размером вдвое превосходящим реальный. На практике такой пример можно применить в игре PING PONG следующим образом: при попадании мяча в биту, та может перевернуться вокруг оси, на секунду увеличившись. В игре PING PONG GOLD я использовал эту команду для файрбола (огненного сгустка или метеора) вырывающегося из ракетки при подбирании соответствующего приза. Файрбол несся по экрану, красиво вращаясь вокруг своей оси. Но о реализации выстрелов (взаимодействии клавиш с подпрограммами) немного ниже, в части 15.
Пример использования ROTOZOOMSPRITE в динамике.

//Загружаем графику
LOADSPRITE “priz.bmp”,0

//Присваиваем переменным значение
a=0  // угол поворота спрайта
b=50 // начальный размер спрайта
triger_size=1 // триггер

WHILE TRUE   //Начало цикла

ROTOZOOMSPRITE 0, 100,100, a, b,0 // вращаем-увеличиваем спрайт
a=a+1 // увеличиваем угол поворота
IF a>=360 THEN a=0  // если угол=360 (сделали полный оборот), тогда а=0

IF b>=200 THEN triger_size=0  //при размере спрайта =>200 обнуляем триггер 
IF b<=50 THEN triger_size=1  // при размере спрайта <=50 триггер 

активизируется

IF triger_size=1 THEN b=b+1  // Обрабатываем положения триггера
IF triger_size=0 THEN b=b-1  // Обрабатываем положения триггера


SHOWSCREEN // Показываем все на экран
WEND  //

Для плавного увеличения-уменьшения мы опять прибегли к триггерам. Триггер сообщает нам, что достигнуто минимально возможное значения, после чего мы принимаем действия связанные с увеличением значений размера спрайта. Достигнув максимального значения, триггер опять переключается, давая сигнал к уменьшению значения. Можно было бы прибегнуть для достижения аналогичного результата к таким операторам, как синус или косинус, но о них также речь пойдет ниже и тогда ваша игра заблистает удивительными траекториями мячей и призов. А пока немного отвлечемся и уделим пару минут не менее важному вопросу. Игрок впервые сел за вашу сногсшибательную игру и… Не может определится какими же клавишами управляется игра. Выход один – лезть в директорию с игрой и искать файлы с описаниями клавиш управления, но… Этого файла может не быть (кто-то стер, как не нужный, вы не писали никакого файла и т.д.). Вывод очевиден – в игре желательно иметь встроенный HELP (текст подсказки с клавишами управления). Т.е. непосредственно в игре плеер может нажать F1 (стандартная клавиша помощи) и прочитать клавиши управления. Оформление целиком зависит от вас. Это может быть просто черный экран, содержащий текст или какая-то картинка. Программируя Ping Pong GOLD я для большей наглядности отсканировал клавиши используемые в игре и на экране при нажатии F1 отображаются на черном фоне фотографические изображения клавиш – такие же, какие вы видите на своей клавиатуре, но снабженные описаниями.
Пример использования клавиши F1 для экрана помощи.

//инициализация переменных
. . .
//Загрузка графики
...
WHILE TRUE

//Тело игры

//Вызов экрана помощи
IF KEY(59) THEN GOSUB help;

SHOWSCREEN
WEND



SUB help:
BLACKSCREEN;
WHILE KEY(57)<1
PRINT “HELP SCREEN”,100,0

PRINT “<- UP”, 0,150
PRINT “-> DOWN”,0,200
PRINT “Z - FIRE”,0,250

PRINT “PRESS KEY SPACE FOR EXIT”,0,450
SHOWSCREEN
WEND
ENDSUB

Поясним, как все устроено. IF KEY(59) THEN GOSUB help;


Если нажата клавиша F1 (код 59), тогда выполнить подпрограмму help. Подпрограмма help представляет из себя обыкновенный цикл внутри которого выводятся надписи помощи. Цикл повторяется до нажатия клавиши SPACE (код 57), о чем мы и уведомляем игрока соответствующей строкой. Внимания заслуживает только команда BLACKSCREEN – она затемняет экран, после чего на черный фон выводятся надписи. Цикл не обязателен. Можно поступить проще:

 
SUB help:
BLACKSCREEN;
PRINT “HELP SCREEN”,100,0
PRINT “<- UP”, 0,150
PRINT “-> DOWN”,0,200
PRINT “Z - FIRE”,0,250
PRINT “PRESS KEY SPACE FOR EXIT”,0,450

SHOWSCREEN
KEYWAIT
ENDSUB

Результaт аналогичен. Теперь можете добавить HELP в ваш код и будущие пользователи видеоигры будут признательны. Игрок, погружаясь в игру не должен ломать голову, какие клавиши управления используются. Есть прекрасный способ избежать проблем, дав возможность игроку самостоятельно назначать клавиши управления, но об этом читайте ниже в соответствующей главе.

(Продолжение следует)

© ООО "Компьютерра-Онлайн", 1997-2024
При цитировании и использовании любых материалов ссылка на "Компьютерру" обязательна.