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

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

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

Продолжение цикла. Счетчики.

Создать игру без счетчиков можно, но… Есть причины, по которым это крайне не желательно! Счетчики применяются, чтобы: игра с одинаковой скоростью шла на Celeron 266 и на P4 3000Mh; анимация разных героев в игре различалась по скорости; перемещение объектов происходило с определенной скоростью; чтобы, к примеру, именно на 20 секунде первого уровня пошел дождь или поднялся ветер в игре.

На самом деле применение счетчиков еще более пространно, но остановимся на этом. При анимации бабочки мы видим - скорость анимации велика. Для замедления ее используются счетчики. Посмотрим использование счетчиков на примере:

//Блок инициализации переменных

Speed_anim=10
  //скорость анимации. Число подбирается экспериментально.
I=0     //счетчик  кадров анимации

//Загрузка графики

LOADSPRITE "babochka.bmp",0
LOADSPRITE "babochka2.bmp",1
LOADSPRITE "babochka3.bmp",2
LOADSPRITE "babochka4.bmp",3

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

WHILE TRUE    //повторять вечно. На самом деле выход по ESC

SPRITE i, 320, 240, 0  //Вывести спрайт i в координаты 320х240. 

IF Speed_anim=10  //если скорость анимации =10
i=i+1           // показать следующий кадр
Speed_anim=0      //сбросить счетчик анимации в 0
ENDIF

Speed_anim=Speed_anim+1  //увеличить счетчик анимации

IF i=4 THEN i=0  //см. предыдущий пример

SHOWSCREEN
WEND
END

Действительно, мы теперь можем изменять скорость анимации. В нашей программе крутится счетчик Speed_anim. Он циклически изменяется от 0 до 10. Этого мы достигаем конструкцией вида Speed_anim=Speed_anim+1. Когда счетчик достигает значения 10, срабатывает логический оператор IF.

IF Speed_anim=10  

если скорость анимации = 10 , тогда увеличиваем номер кадра картинки для отображения следующего спрайта в анимации и обнуляем счетчик Speed_anim, чтобы он опять начал потихоньку приращиваться на 1.

В итоге изменение картинки на экране происходить только когда счетчик Speed_anim достигает значения 10. Если скорость по-прежнему достаточно высока, подставьте в место 10 – 20 или даже 50. Скорость упадет. Но как не сложно заметить простое изменение одного значения заставляет нас лазить по всему тексту выискивая места кода, подлежащие изменению. Все происходить лишь из-за не совсем продуманного кода. Подсказка: значения, которые фигурируют во многих местах кода и которые могут потребовать изменение значения желательно выделять в отдельные переменные (константы).

Пример 1. Вывести в середину экрана спрайт (разрешение экрана 800х600):

SPRITE 1,400,300,0

Такой стиль написания кода не сулит ничего хорошего и требует от вас вычислений. Этого можно избежать, введя в начале программы 2 переменные содержащие максимальное значение экрана:

Max_X = 800
Max_Y = 600

Теперь запись верхнего примера будет выглядеть следующим образом:


SPRITE 1, Max_Х/2, Max_Y/2,0

Продолжение читайте завтра…

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