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

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

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

Ещё про движение. Работающий исходник игры.

Аналогичные действия произведем и над оставшимся нижним и правым краями экрана:
2. Если мяч достигнет нижнего края экрана (координата Y=480) запретить движение вниз (разрешить движение вверх).
3. Если мяч достигнет правого края экрана (координата Х=640) запретить движение вправо (разрешить движение влево).

На языке DiNGS это будет выглядеть как:

// описываем, что делать при определенных
// положениях триггеров UP и LEFT

If UP=1 
Y=Y-1
ENDIF

If UP=0
Y=Y+1
ENDIF

If LEFT=1
X=X-1
ENDIF

If LEFT=0
X=X+1
ENDIF


// Описываем условия переключающие триггеры.

IF X<=0 THEN LEFT=0
IF X>=640 THEN LEFT=1

IF Y>=480 THEN UP=1
IF Y<=0 THEN UP=0

Хотелось бы добавить, что движение, получаемое простым приращением одного и того же числа, не есть хорошо. Здесь то же неплохо использовать счетчики (о которых ниже) и триггеры. Но это более сложные алгоритмы и для первой вашей игры они вряд ли пригодятся.

Вот работающий исходник игры – на это раз у нас уже что-то движется – да не просто, а по траектории (которым мы тоже отведем место в этом туторе).

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

// задаем первоначальное направление полета – влево вверх
UP=1    
LEFT=1

// задаем первоначальные координаты мяча

Ball_X=640/2    //середина экрана
Ball_Y=240    //середина экрана
// НАЧАЛО ИГРЫ

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

SPRITE 1, 600,240,0  
      //  вывести спрайт биты 
SPRITE 0, Ball_Х,Ball_Y,0 
       //  вывести спрайт мяча (шара)

If UP=1 
Ball_Y=Ball_Y-1
ENDIF

If UP=0
Ball_Y= Ball_Y+1
ENDIF

If LEFT=1
Ball_X= Ball_X-1
ENDIF

If LEFT=0
Ball_X= Ball_X+1
ENDIF


// Описываем условие переключающее триггеры.

IF Ball_X<=0 THEN LEFT=0
IF Ball_X>=640 THEN LEFT=1

IF Ball_Y>=480 THEN UP=1
IF Ball_Y<=0 THEN UP=0


SHOWSCREEN   
// Показать все на экране монитора

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

END                                                   

Теперь давайте заставим двигаться биту под нашим управлением с клавиатуры и … Отбивать шарик! Для этого нам следует более подробно уяснить понятие – коллизия. Но для начала добавим в игру красивый фон. Уж какая игра без фона!

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

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