DiNGS – программирование игр в домашних условиях. Часть 12
АрхивПрограммазм (архив)Эффекты: вращение-увеличение
В 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
Поясним, как все устроено. Если нажата клавиша F1 (код 59), тогда выполнить подпрограмму help. Подпрограмма help представляет из себя обыкновенный цикл внутри которого выводятся надписи помощи. Цикл повторяется до нажатия клавиши SPACE (код 57), о чем мы и уведомляем игрока соответствующей строкой. Внимания заслуживает только команда BLACKSCREEN – она затемняет экран, после чего на черный фон выводятся надписи. Цикл не обязателен. Можно поступить проще: Результaт аналогичен. Теперь можете добавить HELP в ваш код и будущие пользователи видеоигры будут признательны. Игрок, погружаясь в игру не должен ломать голову, какие клавиши управления используются. Есть прекрасный способ избежать проблем, дав возможность игроку самостоятельно назначать клавиши управления, но об этом читайте ниже в соответствующей главе.
(Продолжение следует)
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