Да, встроенная функция, дающая два кода клавиш, как-то не очень подходит для игр. Нажав диагональ и огонь - это уже три кнопки. Да и опрашивать каждый раз каждую клавишу клавиатуры, шифровка в две позиции. Потом расшифровка этих позиций... слишком много траты проц времени. Сейчас напишу альтернативный клавиатурный опросник.
- - - Добавлено - - -
использовать нужно так(проверка пробела):Код:KEY_1 EQU 0FEF7H KEY_2 EQU 0FDF7H KEY_3 EQU 0FBF7H KEY_4 EQU 0F7F7H KEY_5 EQU 0EFF7H KEY_0 EQU 0FEEFH KEY_9 EQU 0FDEFH KEY_8 EQU 0FBEFH KEY_7 EQU 0F7EFH KEY_6 EQU 0EFEFH KEY_Q EQU 0FEFBH KEY_W EQU 0FDFBH KEY_E EQU 0FBFBH KEY_R EQU 0F7FBH KEY_T EQU 0EFFBH KEY_P EQU 0FEDFH KEY_O EQU 0FDDFH KEY_I EQU 0FBDFH KEY_U EQU 0F7DFH KEY_Y EQU 0EFDFH KEY_A EQU 0FEFDH KEY_S EQU 0FDFDH KEY_D EQU 0FBFDH KEY_F EQU 0F7FDH KEY_G EQU 0EFFDH KEY_EN EQU 0FEBFH KEY_L EQU 0FDBFH KEY_K EQU 0FBBFH KEY_J EQU 0F7BFH KEY_H EQU 0EFBFH KEY_CS EQU 0FEFEH KEY_Z EQU 0FDFEH KEY_X EQU 0FBFEH KEY_C EQU 0F7FEH KEY_V EQU 0EFFEH KEY_SP EQU 0FE7FH KEY_SS EQU 0FD7FH KEY_M EQU 0FB7FH KEY_N EQU 0F77FH KEY_B EQU 0EF7FH KEYTEST pop hl inc hl ld a,(hl) inc hl in a,(0feh) or (hl) inc hl inc a RLCA AND 1 ld (_KEYPRESSED),a jp (hl) _KEYPRESSED defw 0
asm(keytest)
asm(key_sp);
if keypressed<>0 then game_state:=1;
Именно два вызова подряд. Второй вызов это не вызов, а передача константы.
Переменная keypressed возвращает 0-не нажато или 1-нажато.
- - - Добавлено - - -
На счёт проверки коллизий, тоже есть идея, как сделать это проще. Завести матрицу 32 на 16, и там хранить номер объекта, и нужно-ли очистить это знакоместо. Две проблемы сразу решатся.
Завтра попробую написать.




Ответить с цитированием