|
Życie Wieczne
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Piotr-246
Gość
|
Wysł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.
|
|
Powrót do góry |
|
|
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Piotr-246
Gość
|
Wysł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.
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Piotr-246
Gość
|
Wysł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
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Piotr-246
Gość
|
Wysł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.
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Piotr-246
Gość
|
Wysł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.
|
|
Powrót do góry |
|
|
|
|
Możesz pisać nowe tematy Możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach
|
fora.pl - załóż własne forum dyskusyjne za darmo
Powered by phpBB © 2001, 2005 phpBB Group
|