Реклама в Интернет       Все Кулички
Искусство создания игр
head

Сделать стартовой

Без взаимодействия с игроком игры не существует. Стандартный выход из такой ситуации предложен Game Maker, благодаря использованию событий мыши и клавиатуры. Но иногда Вам может понадобиться больше управления. Используя код, Вы можете проверить, нажаты ли кнопки клавиатуры или мыши. Обычно Вы проверяете эти аспекты в событии шага, когда объект controller (диспетчер) принимает соответствующие указания.

Клавиатура

Мышь

Джойстик

Клавиатура

 

Для взаимодействия с клавиатурой существуют следующие переменные и функции:

    keyboard_lastkey Клавиатурный код последней нажатой клавиши. Смотрите ниже - константы клавиатурного кода. Вы можете изменять его, например, установить на 0, если Вы бы нажали клавишу.
    keyboard_key Клавиатурный код нажатой в данный момент клавиши (смотрите ниже; 0 - если клавиша не нажата).
    keyboard_lastchar Последний нажатый символ (как строка).
    keyboard_string Строка, содержащая последний в большинстве 1240 печатных символов. Данная строка может содержать только символы печатного типа. Она также корректно отвечает на нажатие клавиши backspace, стирая последний символ. Чтобы проверить, нажата ли определённая клавиша или кнопка мыши - Вы можете использовать следующие функции. Это бывает полезно при одновременном нажатии кнопок.

Иногда может быть полезным отображение одной клавиши другой. Например, Вы могли бы захотеть позволить играющему использовать как клавиши позиционирования, так и клавиши numpad. И, не дублируя действий, Вы можете отобразить клавиши numpad на клавишах позиционирования. Также Вы могли бы захотеть осуществить механизм, в котором играющий может назначить клавиши для использования. Для этого доступны следующие функции:

    keyboard_set_map(key1,key2) Отображает клавишу в клавиатурном коде: key1 на key2.
    keyboard_get_map(key) Возвращает последнее назначение для клавиши.
    keyboard_unset_map() Восстанавливает все клавиши для отображения самих себя.

Для конкретной проверки, нажата ли какая-нибудь клавиша или кнопка мыши, Вы можете использовать следующие функции. Это особенно полезно при одновременном нажатии клавиш.

    keyboard_check(key) Возвращает, если нажата клавиша с конкретным клавиатурным кодом.
    keyboard_check_pressed(key) Возвращает, если клавиша с конкретным клавиатурным кодом была нажата с поры выполнения последнего шага.
    keyboard_check_released(key) Возвращает, если клавиша с конкретным клавиатурным кодом была отпущена с поры выполнения последнего шага.
    keyboard_check_direct(key) Возвращает, если нажата клавиша с конкретным клавиатурным кодом, проверяемая непосредственно аппаратные средства. Результат независим от того, какое приложение рассматривается. Она учитывается для ещё нескольких проверок. В особенности Вы можете использовать клавиатурные коды: vk_lshift, vk_lcontrol, vk_lalt, vk_rshift, vk_rcontrol и vk_ralt, чтобы проверить, нажат ли левый или правый Shift или клавиша Alt.

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

    keyboard_get_numlock() Возвращает, если установлен Numlock.
    keyboard_set_numlock(on) Устанавливает (истина) или не устанавливает (ложь) Numlock.
    keyboard_key_press(key) Имитирует нажатие клавиши с указанным клавиатурным кодом.
    keyboard_key_release(key) Имитирует отпускание клавиши с указанным клавиатурным кодом.

Для виртуальных клавиатурных кодов существуют следующие константы:

    vk_nokey клавиатурный код представляет, что не нажата никакая клавиша
    vk_anykey клавиатурный код представляет, что нажата любая клавиша
    vk_left клавиатурный код для клавиши стрелка "влево"
    vk_right клавиатурный код для клавиши стрелка "вправо"
    vk_up клавиатурный код для клавиши стрелка "вверх"
    vk_down клавиатурный код для клавиши стрелка "вниз"
    vk_enter клавиша Enter
    vk_escape клавиша Escape
    vk_space клавиша Space
    vk_shift клавиша Shift
    vk_control клавиша Ctrl
    vk_alt клавиша Alt
    vk_backspace клавиша Backspace
    vk_tab клавиша Tab
    vk_home клавиша Home
    vk_end клавиша End
    vk_delete клавиша Delete
    vk_insert клавиша Insert
    vk_pageup клавиша Pageup
    vk_pagedown клавиша Pagedown
    vk_pause клавиша Pause/Break
    vk_printscreen клавиша Printscreen/SysRq
    vk_f1 ... vk_f12 клавиатурные коды для функциональных клавиш F1 - F12
    vk_numpad0 ... vk_numpad9 клавиши на цифровой клавиатуре
    vk_multiply клавиша умножения на цифровой клавиатуре
    vk_divide клавиша деления на цифровой клавиатуре
    vk_add клавиша сложения на цифровой клавиатуре
    vk_subtract клавиша вычитания на цифровой клавиатуре
    vk_decimal клавиша десятичной точки на цифровой клавиатуре
     

Для символьных клавиш используйте, например ord('A'). (С заглавной буквы.) Для цифровых клавиш используйте ord('5') чтобы получить клавишу <5>. Следующие константы могут использоваться только в keyboard_check_direct:

    vk_lshift клавиша левый Shift
    vk_lcontrol клавиша левый Ctrl
    vk_lalt клавиша левый Alt
    vk_rshift клавиша правый Shift
    vk_rcontrol клавиша правый Ctrl
    vk_ralt клавиша правый Alt

Для примера, предположим, что Вы имеете объект, которым пользователь может управлять при помощи клавиш курсора, Вы можете поместить следующую часть кода в событие шага объекта:

    {

     if (keyboard_check(vk_left)) x -= 4;

     if (keyboard_check(vk_right)) x += 4;

     if (keyboard_check(vk_up))  y -= 4;

     if (keyboard_check(vk_down)) y += 4;

    }

Конечно намного проще просто поместить его в событие клавиатуры.

Существует несколько дополнительных функций, имеющих отношение к взаимодействию с клавиатурой.

    keyboard_clear(key) Очищает состояние клавиши. Это означает, что больше не будет генерироваться событие клавиатуры, пока оно не повторится.
    io_clear() Очищает все состояния клавиатуры и мыши.
    io_handle() Обрабатывает ввод/вывод пользователя, модифицируя состояние мыши и клавиатуры.
    keyboard_wait() Ожидает, пока пользователь не нажмёт клавишу на клавиатуре.

Мышь

 

Для взаимодействия с мышью существуют следующие переменные и функции:

    mouse_x* X-координата мыши. Не может быть изменена.
    mouse_y* Y-координата мыши. Не может быть изменена.
    mouse_button Нажатая в данный момент кнопка мыши. Используется как значения mb_none, mb_any, mb_left, mb_middle или mb_right.
    mouse_lastbutton Последняя нажатая кнопка мыши.

Чтобы проверить, нажата ли конкретная кнопка мыши, Вы можете использовать следующие функции. Это в основном полезно, когда многие кнопки нажимаются одновременно.

    mouse_check_button(numb) Возвращает, если нажата кнопка мыши (используется как значения mb_none, mb_left, mb_middle или mb_right).
    mouse_check_button_pressed(numb) Возвращает, если была нажата кнопка мыши с поры выполнения последнего шага.
    mouse_check_button_released(numb) Возвращает, если была отпущена кнопка мыши с поры выполнения последнего шага.

Существует несколько дополнительных функций, имеющих отношение к взаимодействию с мышью.

    mouse_clear(button) Очищает состояние кнопки мыши. Это означает, что больше не будет генерироваться событие мыши, пока игрок не отпустит кнопку и не нажмёт её снова.
    io_clear() Очищает все состояния клавиатуры и мыши.
    io_handle() Обрабатывает ввод/вывод пользователя, модифицируя состояние мыши и клавиатуру
    mouse_wait() Ожидает, пока пользователь не нажмёт кнопку мыши.

Джойстик

 

Существуют некоторые события связанные с джойстиками. Для полного управления над ними имеется целый набор функций. Game Maker поддерживает до двух джойстиков. Все указанные функции берут идентификатор джойстика как параметр.

    joystick_exists(id) Возвращает, если существует идентификатор джойстика (1 или 2).
    joystick_name(id) Возвращает имя джойстика.
    joystick_axes(id) Возвращает количество осей джойстика.
    joystick_buttons(id) Возвращает количество кнопок джойстика.
    joystick_has_pov(id) Возвращает, если джойстик имеет функцию обзора точек.
    joystick_direction(id) Возвращает клавиатурный код (vk_numpad1 к vk_numpad9) определяющий  направление идентификатора джойстика (1 или 2).
    joystick_check_button(id,numb) Возвращает, если кнопка джойстика нажата (номер в диапазоне 1-32).
    joystick_xpos(id) Возвращает позицию (-1 до 1) x-оси идентификатора джойстика.
    joystick_ypos(id) Возвращает y-позицию джойстика.
    joystick_zpos(id) Возвращает z-позицию джойстика (если он имеет z-ось).
    joystick_rpos(id) Возвращает позицию руля (крестика) джойстика (или четвёртую ось).
    joystick_upos(id) Возвращает u-позицию джойстика (или пятую ось).
    joystick_vpos(id) Возвращает v-позицию джойстика (или шестую ось).
    joystick_pov(id) Возвращает позицию точки обзора джойстика. Это угол между 0 и 360 градусов. 0 - вперёд/вверх, 90 - направо, 180 - назад и 270 - налево. Когда не указана пользователем никакая точка обзора, то возвращается значение - 1.

Rambler's Top100

Requier inc. 2007