Autor Wiadomość
Piotr-246
PostWysłany: Pon 19:53, 11 Sty 2021    Temat postu:

Jeśli jeden z dwóch, przyciśniętych razem klawiszy, zostałby zwolniony, nie ma na razie sposobu, aby to zbadać.

Pozostaje zaprogramowanie gry na Joystick lub budowa gry w taki sposób, aby ruchy ukośne wykluczyć. Albo zastosować ruch pionowy w oparciu o klawisze Shift, Control.
Piotr-246
PostWysłany: Pon 19:48, 11 Sty 2021    Temat postu:

Programik sprawdza naciśnięcie klawisza, po czym w pętli trwającej najwyżej 500 cykli sprawdza ponowne naciśnięcie klawisza.

Jeśli obie zmienne, key1$ i key2$ zarejestrowały w tym czasie przyciśnięcie klawiszy, komputer sprawdza sumę ich wartości. Sumę po to, aby było obojętne, czy najpierw był wciśnięty klawisz kierunku pionowego czy poziomego.

Programik nie wyczerpuje zagadnienia, gdyż przytrzymanie obu klawiszy nie daje jeszcze wyniku w postaci stałego komunikowania kierunku ukośnego.
Piotr-246
PostWysłany: Pon 18:52, 11 Sty 2021    Temat postu:

Programik, który bada naciśnięcie dwóch różnych strzałek:

góra-dół itd

--------------------------------------

DEF SEG = 0

CLS
petla:

key1$ = INKEY$:
IF key1$ = "" THEN GOTO petla

FOR j = 1 TO 500
key2$ = INKEY$
IF key2$ <> "" THEN EXIT FOR
NEXT j

suma$ = key1$ + key2$

IF LEN(suma$) = 4 THEN
a1$ = MID$(key1$, 2, 1)
a2$ = MID$(key2$, 2, 1)
suma = ASC(a1$) + ASC(a2$)
IF suma = 149 THEN PRINT "gora prawo": GOTO ruch
IF suma = 147 THEN PRINT "gora lewo": GOTO ruch
IF suma = 155 THEN PRINT "dol lewo": GOTO ruch
IF suma = 157 THEN PRINT "dol prawo": GOTO ruch
END IF

IF key1$ = CHR$(0) + "H" THEN PRINT "gora": GOTO ruch
IF key1$ = CHR$(0) + "P" THEN PRINT "dol": GOTO ruch
IF key1$ = CHR$(0) + "K" THEN PRINT "lewo": GOTO ruch
IF key1$ = CHR$(0) + "M" THEN PRINT "prawo": GOTO ruch

ruch:
GOTO petla
Piotr-246
PostWysłany: Pon 16:59, 11 Sty 2021    Temat postu:

Wpisanie po każdym naciśnięciu klawisza

POKE 1050, 30: POKE 1052, 30

sprawia, że bufor klawiatury ma tylko dwa bajty.
Piotr-246
PostWysłany: Pon 16:32, 11 Sty 2021    Temat postu: Funkcje klawiatury w QuickBasicu

Funkcje klawiatury w QuickBasicu


Oprócz funkcji INKEY$ można informacje o klawiaturze czerpać bezpośrednio z pamięci komputera.


Komórki 1050 i 1051 wskazują adres bufora klawiatury obliczany ze wzoru:
PEEK(1050)+256*PEEK(1051)+1024

Komorka 1052 i 1053 wskazuje końcowy adres bufora obliczany wg wzoru:

PEEK(1052)+256*PEEK(1053)+1024


Czyszczenie bufora klawiatury:
----------------------------------------

DEF SEG=0: POKE 1050, PEEK(1152) - czyści bufor klawiatury, jak piszą w sieci.

Niektórzy piszą, że dla wyczyszczenia bufora należy wpisać:

POKE 1050, 30: POKE 1052, 30

Wielkość bufora zależy od jego zapełnienia, stąd dwie metody czyszczenia, aby początek=koniec.

Powered by phpBB © 2001, 2005 phpBB Group