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

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

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

Переназначение клавиш. Управление мышью.

Большой успех игры не мало зависит от удачного управления. Вы привыкли, чтобы клавишей «огонь» был пробел, а ваш друг предпочитает Ctrl. Есть способ, который удовлетворит обоих – назначение клавиш пользователем. Перед началом игры вы укажите клавиши управления, удобные вам, и сможете целиком погрузится в игру, не отвлекаясь на мелочи. В DiNGS этим ведает команда INKEY. INKEY возвращает код нажатой клавиши. В общем-то, вы много использовали утилиту для определения нажатой клавиши keycode – ниже код этой программы.

WHILE TRUE
   i$=INKEY$()
   PRINT i$, 0, 100
SHOWSCREEN
WEND

Переменной i присваивается нажатая клавиша. Знак $ указывает на размещение данных в памяти, что исключает их случайное изменение. Следующая строка выводит на экран код нажатой клавиши. Рассмотрим пример переназначения клавиш.

GOSUB control

WHILE TRUE
IF key(left$)=1 THEN PRINT “LEFT”,100,100
IF key(right$)=1 THEN PRINT “RIGHT”,100,100
SHOWSCREEN
WEND
END

SUB control:
PRINT “PRESS LEFT KEY”
   left$=INKEY$()
PRINT “PRESS RIGHT KEY”
   right$=INKEY$()
ENDSUB

В начале программы вызывается подпрограмма переназначения клавиш control, которая просит вас нажать клавишу управления которую вы желаете использовать для перемещения объекта влево. Нажатая клавиша сохраняется в переменной left. Далее программа просит нажать клавишу для управления движением вправо и присваивает код нажатой клавиши переменной right.

Далее демонстрируется использование вновь назначенных клавиш:

IF key(left$)=1 THEN PRINT “LEFT”,100,100

Следует обратить внимание – функция INKEY появилась только в последних версиях языка DiNGS.

Теперь рассмотрим использование мыши в игре.

Команда MOUSESTATE помещенная в код программы будет постоянно передавать вам данные о координатах курсора мыши и нажатых клавишах. Пример кода:

MOUSESTATE mouse_x, mouse_y, button1, button2 

Если требуется вывести координаты курсора в определенное положение используется команда SETMOUSE. Пример кода:

SETMOUSE 300,200

Ниже приведем пример использования обоих команд.

LOADSPRITE “cursor.bmp”,0
SETMOUSE 640/2, 480/2

WHILE TRUE
MOUSESTATE mouse_x, mouse_y, button1, button2 
SPRITE 0, mouse_x, mouse_y, 0

IF button1=1 THEN PRINT “MOUSE PRESS BUTTON 1”,100,100
IF button2=1 THEN PRINT “MOUSE PRESS BUTTON 2”,100,150

SHOWSCREEN
WEND
END

В игре мышь можно использовать в различных меню, но не переусердствуйте – если в игре доминирующее положение занимает управление с клавиатуры, то внезапное использование мыши в некоторых меню может сбить игрока с толку. По крайней мере вы теперь знаете, как подчинить мышь в игре.

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

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