Luku 8

Näppäimistö

Seuraava koodi tulostaa ruudulle rivin tekstiä, aina kun ohjelman käyttäjä painaa näppäimistöltä välilyöntiä:

Do
    If KeyHit(32) Then
        Print "Painoit välilyöntiä"
    End If
    DrawScreen
Loop

Funktio KeyHit kertoo, onko käyttäjä painanut tiettyä näppäintä. Jokaisella näppäimellä on oma koodinsa: esimerkiksi välilyönnin koodin on 32.

EppaBasicin komentolistassa on täydellinen luettelo näppäinkoodeista.

Hahmon liikutus

Seuraavassa ohjelmassa käyttäjä pystyy liikuttamaan ruudulla olevaa hahmoa (ympyrä) nuolinäppäimillä:

Dim x = 320
Dim y = 240
Do
    If KeyHit(37) Then x = x - 10
    If KeyHit(38) Then y = y - 10
    If KeyHit(39) Then x = x + 10
    If KeyHit(40) Then y = y + 10
    ClearScreen
    FillCircle x, y, 20
    DrawScreen
Loop

Ideana on, että muuttujat x ja y sisältävät tiedon hahmon sijainnista. Kun käyttäjä painaa nuolinäppäimiä, sijainti muuttuu.

Nuolinäppäinten koodit ovat:

  • 37: vasemmalle
  • 38: ylöspäin
  • 39: oikealle
  • 40: alaspäin

Sulava liikutus

Funktio KeyHit kertoo, onko käyttäjä painanut näppäintä funktion edellisen kutsukerran jälkeen. Huonona puolena on, että jos käyttäjä pitää näppäintä pohjassa, funktio tunnistaa vain yhden näppäimenpainalluksen.

Ratkaisu ongelmaan on käyttää funktiota KeyDown. Se kertoo, onko tietty näppäin sillä hetkellä painettuna.

Tässä on uusi versio hahmon liikutuksesta, joka käyttää funktiota KeyDown:

Dim x = 320
Dim y = 240
Do
    If KeyDown(37) Then x = x - 2
    If KeyDown(38) Then y = y - 2
    If KeyDown(39) Then x = x + 2
    If KeyDown(40) Then y = y + 2
    ClearScreen
    FillCircle x, y, 20
    DrawScreen
Loop

Näppäintesti

Seuraava ohjelma näyttää, mitkä näppäimet ovat tällä hetkellä painettuna. Ohjelman avulla voi selvittää minkä tahansa näppäimen koodin.

Do
    ClearScreen
    For i = 0 To 255
        If KeyDown(i) Then
            Print "Näppäin " & i & " on painettuna"
        End If
    Next i
    DrawScreen
Loop

Edellinen | Seuraava