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

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

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

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

Продолжение вчерашней темы.

В двух словах это можно сказать так:
1. Вывести спрайт в координаты x и у.
2. Изменить значение координаты х для движения по горизонтали, y – для движения по вертикали и оба, если хотим получить движение по диагонали.

То же самое на языке DiNGS:

SPRITE 0, x,350,0    //выводим спрайт               
x=x+1
   //изменяем координату х для движения по горизонтали

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

Метка:

Вывести спрайт
Увеличить координату Х

Перейти на  метку Метка

Для цикла используем оператор While ... Wend. Что аналогично меткам, но более удобно. Многие программисты, почему-то избегают пользоваться оператором GOTO – им кажется, что это несерьезный оператор для начинающих, который профессионалу не подойдет (пользоваться им зазорно, это для ламеров и т.д.). Мне кажется пользоваться нужно и можно любыми операторами, если они облегчают программирование. Иногда проще использовать одну метку и оператор GOTO, чем писать кучу ненужного кода. Не могу, не согласится с утверждением, что частое, неумеренное использование меток и GOTO ведет к загромождению и запутанности кода, но совет один – пользоваться всем нужно в меру – и от сахара зубы болеть могут. В качестве условия выхода зададим клавишу ESC (код 1 - выяснить это можно запустив утилиту keycodes и нажав клавишу ESC). Конструкция выглядит так:

While KEY(1)=0   //продолжать пока не нажата клавиша ESC 
Вывод спрайтов
Изменение координат и т.д.
WEND

Заставим двигаться картинку шара по экрану. Полный текст игры:

LOADSPRITE  "bita.bmp", 0      // загрузить картинку биты в ячейку № 0

X=100                //присвоим значение переменной Х 

WHILE KEY(1)=0        //начало цикла игры – ее сердце

SPRITE 0, Х,350,0    //  вывести спрайт биты в координаты 
X=X+1        // увеличение координаты Х на 1
SHOWSCREEN   // Показать все на экране монитора

WEND    // переход в начало цикла к оператору WHILE

END    // Конец программы

Здесь хотелось бы обратить внимание на новую операцию, которую до этого момента мы не применяли – присвоение значений переменным – инициализацию переменных. В данном случае переменной Х мы присвоили значение 100 прежде чем она была использована в программе оператором SPRITE.

Что произойдет если этого не сделать?
Переменная Х пока не инициализирована, может содержать любые числа. Что бы наша бита, оказалась при отображении на экране именно в координате по Х равной 100, мы и инициализировали заблаговременно Х значением 100.

Инициализацию – присвоение значений переменным – желательно всегда производить в начале программы.

Настало время сохранить программу на диск. Скомпилировать по F8 и запустить по F5.

Бита движется! Впрочем, ничего удивительного в этом нет.
А как заставить ее двигаться быстрее?
Вопрос простой, но не все знают ответ.

Увеличивать переменную Х не на 1 , а не большее значение. Например:
X=X+5
Увеличиваем значение сразу на 5!

А как замедлить движение? Даже когда приращение переменной осуществляется всего на единицу, скорость может для какого-то объекта в игре (например, облака) оказаться слишком высокой. Что может быть медленнее единицы? Единица деленная на 2, на 3, на 4 и т.д.!!!
Х=Х+1/2

А если нужно еще медленнее? Об этом я расскажу ниже, когда мы затронет вопрос тригеров и счетчиков в игре. Но можете не волноваться – замедлить игровой объект можно до любой степени!

Запустив программу, мы некоторое время наблюдаем движущуюся биту, которая неспешно исчезает за экраном. Занавес.

А вспомните лифты, движущиеся вверх-вниз платформочки в таких замечательных приставочных играх, как Super Mario, Contra, Duck Tales? Вам интересно как это сделать? Тогда настало время рассказать о триггерах в игре (терминология автора). Триггер – выключатель содержит несколько положений, в простейшем случае 2 – включено-выключено. Или 0 и 1.

Эксперименты продолжим на нашей проверенной бите. Или можете нарисовать лифт, если захотите прочувствовать всю важность момента.

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

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