Forum Życie Wieczne Strona Główna Życie Wieczne

 
 FAQFAQ   SzukajSzukaj   UżytkownicyUżytkownicy   GrupyGrupy   GalerieGalerie   RejestracjaRejestracja 
 ProfilProfil   Zaloguj się, by sprawdzić wiadomościZaloguj się, by sprawdzić wiadomości   ZalogujZaloguj 

Funkcje klawiatury w QuickBasicu

 
Napisz nowy temat   Odpowiedz do tematu    Forum Życie Wieczne Strona Główna -> Offtopic
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Piotr-246
Gość






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.
Powrót do góry
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Piotr-246
Gość






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.
Powrót do góry
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Piotr-246
Gość






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
Powrót do góry
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Piotr-246
Gość






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.
Powrót do góry
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Piotr-246
Gość






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.
Powrót do góry
Wyświetl posty z ostatnich:   
Napisz nowy temat   Odpowiedz do tematu    Forum Życie Wieczne Strona Główna -> Offtopic Wszystkie czasy w strefie EET (Europa)
Strona 1 z 1

 
Skocz do:  
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
Regulamin