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
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/
Näppäinkoodilistat, josta löytyy myös SCAN-koodit:
https://www.ohjelmointiputka.net/oppaat/opas.
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.
POKE &H1A, PEEK(&H1C)
Laita tuo sinne loopin alkuun niin ei pitäisi piippailla tai jäädä huomaamatta vapautukset.
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
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.
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
Aihe on jo aika vanha, joten et voi enää vastata siihen.