Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: QB: Näppäimistön luku

janux [26.03.2003 22:32:02]

#

hmmpphhh näinpä täällä putkassa taannoin viestin jossa sanottiin että "Näppäimistö kannattaisi lukea INP(&H60):lla". Noh miten tuo sitten toimihee? miten voin tuolla lukea esim että jos vaikkapa C on painettu pohjaan niin jotain tapahtuu

Teme [27.03.2003 09:14:49]

#

Ja kysymyshän koskee QBasicia...

Tapa #1

SELECT CASE INKEY$
CASE "A"
'Mitä tehdään kun A on painettu
CASE "S"
'Mitä tehdään kun S on painettu
END SELECT

------------------- Tai --------------------

IF INKEY$ = "A" THEN
'Mitä tehdään kun A on painettu
ELSEIF INKEY$ = "S" THEN
'Mitä tehdään kun S on painettu
END IF

Tämä INKEY$ lukee vain yhtä näppäintä kerrallaan, ja siksi sitä ei ole hyvä käyttää peleissä, vaan tuo alempi soveltuu peleihin.

Tapa #2

DO
  scan% = INP(&H60) 'Luetaan näppis
LOOP UNTIL scan% = 1 'Tehdään niin kauan kunnes ESC:iä painetaan

------------------- Tai --------------------

scan% = INP(&H60)
IF scan% = 46 THEN 'C:tä painettu
PRINT "Painoit C-kirjainta"
ELSEIF scan% = 30 THEN 'A:ta painettu
PRINT "Painoit A-kirjainta"
END IF

Koodivinkki näppäimistön lukemisesta:
https://www.ohjelmointiputka.net/koodivinkit/23438-qb-näppäimistökäsittelijä-qb

Näppäinkoodilistat, josta löytyy myös SCAN-koodit:
https://www.ohjelmointiputka.net/oppaat/opas.php?tunnus=napk

thefox [27.03.2003 13:17:21]

#

Jooh, no, tuo portista 60h lueskeleminen on sitten siitä tosiaan vähän huono, että ohjelma voi helposti missata painalluksen (mitä ei kyllä huomaa) tai vapautuksen (minkä huomaa ;-)
Kovikset hookkaa näppiskeskeytysten, kikkailujen kautta sellainen viritys onnistuisi ihan puhtaalla QB:lläkin.

Sami [27.03.2003 15:40:22]

#

POKE &H1A, PEEK(&H1C)

Laita tuo sinne loopin alkuun niin ei pitäisi piippailla tai jäädä huomaamatta vapautukset.

janux [27.03.2003 21:33:21]

#

Nojaa-a... jostain syystä jos painaa monta kertaa nappeja niin se ei enää ota kunnolla napin painalluksia siis tolla 2:s tavalla. Onko ongelmaan joku yksinkertainen ratkaisu

Jogge [28.03.2003 18:00:00]

#

näppäimistöpuskurin tyhjennys.
onnistuu ainakin näillä kahdella tavalla:
1. pistät sinne looppiin turha$=inkey$.
2. (nopeampi) koodin alkuun DEF SEG=&H40 ja sinne looppiin POKE (&H1A),0.
Näppäimistöpuskuria ei tarvitse aivan joka kerta tyhjentää, vaan riittänee, että sen tyhjentää vaikka joka 50 kerta.

janux [01.04.2003 21:34:30]

#

Nyt toimii joo. Mutta saiskohan tätä mitenkään niin että vois painaa 2 nappia yht aikaa pohjassa. Nimittäin tuo tulee kaksinpeliin jossa liikutaan yht aikaa ukoilla

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta