Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB.NET: Näppäimistön luku konsolissa (vb.net)

Schizo [30.04.2005 20:16:05]

#

Eli jelppikään ja kertokaa miten lukea näppäimistöä konsolisovelluksessa? Enkä nyt tarkoita Console.ReadLine():a, vaan ihan suoraan napinpainalluksia ilman enterin odottamista.

Niko [30.04.2005 20:43:44]

#

eipä taida ilman apia onnistua

Juice [30.04.2005 21:28:25]

#

GetASyncKeyStatella onnistuu https://www.ohjelmointiputka.net/koodivinkit/23813-vb6-näppäimistöloki

Schizo [01.05.2005 02:20:28]

#

Jesh, pelittää, kiits. Vaan olisko jotain järkevämpää tapaa hoitaa looppaaminen, kuin näin:

' Pelilooppi.
Do

napit:
    If GetAsyncKeyState(65) Then : Move(3) : GoTo päivitys : End If ' A.
    If GetAsyncKeyState(68) Then : Move(1) : GoTo päivitys : End If ' D.
    If GetAsyncKeyState(83) Then : Move(2) : GoTo päivitys : End If ' S.
    If GetAsyncKeyState(87) Then : Move(0) : GoTo päivitys : End If ' W.

    GoTo napit

päivitys:
    Päivitä()
Loop

Move():lla tyyppi siis liikkuu ja Päivitä() piirtää namiskukkelit ruudulle uusiksi. Välkkyy inhottavasti suoralla juostaessa, joten jotain viivettä vissiin tarvitsisi. Onko tuollaisen pienen viiveen aiheuttamiseen jotain kätevää apia vai onnistuisko vb:n perusfunktioilla ilman enempiä ajastin-sotkuja? Ja tottakai hyvä jos noilla gotoille löytys kätsympi vaihtoehto.

Juice [01.05.2005 19:04:05]

#

' Pelilooppi.
Do

    While True
        If GetAsyncKeyState(65) Then : Move(3) : Exit While : End If ' A.
        If GetAsyncKeyState(68) Then : Move(1) : Exit While : End If ' D.
        If GetAsyncKeyState(83) Then : Move(2) : Exit While : End If ' S.
        If GetAsyncKeyState(87) Then : Move(0) : Exit While : End If ' W.
    End While
    Päivitä()
Loop

Kokeiles noin (en uskaltanut muokata koodiasi enempää, yhdelläkin loopilla selvittäisiin). Ja viivettä saat komentamalla System.Threading.Thread.Sleep(millisekunnit)

Schizo [02.05.2005 16:10:47]

#

Katos juu, whilelläkin pääsi gotoista eroon. Kiitokset.

Vastaus

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

Tietoa sivustosta