DiNGS – программирование игр в домашних условиях. Часть 17
АрхивПрограммазм (архив)Переназначение клавиш. Управление мышью.
Большой успех игры не мало зависит от удачного управления. Вы привыкли, чтобы клавишей «огонь» был пробел, а ваш друг предпочитает 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
В игре мышь можно использовать в различных меню, но не переусердствуйте – если в игре доминирующее положение занимает управление с клавиатуры, то внезапное использование мыши в некоторых меню может сбить игрока с толку. По крайней мере вы теперь знаете, как подчинить мышь в игре.
(Продолжение следует)