Просмотр полной версии : Коды клавиатуры с бэйсика.
Привет, подскажите как снимать коды с клавиатуры. и потом использовать их при управлении?
LET A=IN номер порта полуряда - это лучше всего подходит для одновременного нажатия кнопок
или IF INKEY$="буква" THEN .....................
по скоростям работы не различаются?
IN должен быстрее работать, но после него надо делать AND и сравнивать с числом... но думается, это все равно быстрее должно быть, на немного.
п.с. я уже забыл, бинарный AND в бейсике-то есть? если нет, то будет медленнее.
INKEY даёт опрос только одной кнопки - для одновременного опроса двух клавиш (допустим движение по диагонали) не подходит.
Столкнулся с этим буквально на днях. По привычке опрашивал побитно каждый порт. Хорошего ничего не вышло.
А вот tiboh решил проблему.
ld a,(#5C08)
cp (какую клавишу нада)
jp z, если нажата, то туда.
null_device
14.08.2012, 00:01
Есть еще листемная переменная LASTKEY. В ней лежит код последней нажатой клавиши. Весьма неплохая альтернатива конструкции [СОDE]INKEY$, в бейсике.
Весьма неплохо, на примитивном уровне, способы опроса клавиш управления описаны в книжке: "Как написать игру на бейсике".
IN должен быстрее работать, но после него надо делать AND и сравнивать с числом... но думается, это все равно быстрее должно быть, на немного.
А можно поподробней)
А можно поподробней)
да думается мне, нет AND побитового в бейсике, поэтому... смысла нет.
null_device
15.08.2012, 07:16
нет AND побитового в бейсике
Конечно, побитового сравнения в бейсике нет. Только если "ручками" - разложить полученное из порта число побитово, но по времени это займет дофига. Подобный пример "перевода", есть в указанной мною книге (хотя я делал несколько иначе).
Руслан, из бейсика самый быстрый и простой опрос клавы как предложил goodboy:
IF INKEY$="буква" THEN
USERHOME
07.09.2013, 01:49
Ещё такое было (я для пианино делал BEEP команды)
10 LET A$=IKEYS$
20 IF A$="1" THEN BORDER 1
30 IF A$="2" THEN BORDER 2
.....
1000 GO TO 10
---------- Post added at 01:43 ---------- Previous post was at 01:01 ----------
BASIC
IN 65278 считывает ряд от CS до V
IN 65022 считывает ряд от A до G
IN 64510 - - - Q-T
IN 63486 - - - 1-5
IN 61438 - - - 0-6
IN 57342 - - - P-Y
IN 49150 - - - Ent-H
IN 32766 - - - Space-B
---------- Post added at 01:49 ---------- Previous post was at 01:43 ----------
В журнале нашёл
10 FOR N=0 TO 7: REM номер полуряда
20 LET A=254+256*(255-2**N)
30 PRINT AT 0,0; IN A
40 GO TO 10
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot