Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Näppäinonkelma (QB)

Latska [23.10.2004 15:45:05]

#

Olin tekemässä kasinomanagerointipeliä, kun ilmeni kumma ongelma:

Alkuvalikossa liikutaan nuolilla. Mutta ainoastaan ensimmäinen nuolitarkistus toimii.
Koodi:

LOCATE y, x: PRINT cur$
IF INKEY$ = CHR$(0) + CHR$(80) AND y = 4 AND x = 26 THEN vari1 = 15: vari2 = 14: LOCATE y, x: PRINT tyhja$: y = 6: x = 15 'tämä toimii
'seuraavat taas eivät toimi
IF INKEY$ = CHR$(0) + CHR$(80) AND y = 6 AND x = 15 THEN vari1 = 14: vari2 = 15: LOCATE y, x: PRINT tyhja$: y = 6: x = 26
IF INKEY$ = CHR$(0) + CHR$(72) AND y = 4 AND x = 26 THEN vari1 = 15: vari2 = 14: LOCATE y, x: PRINT tyhja$: y = 6: x = 15

Kiitos etukäteen.

remontti-reiska [23.10.2004 16:27:24]

#

Kanattaa kokeilla muuttaa muut ifit elseifeiksi.

hunajavohveli [23.10.2004 17:32:22]

#

Vika on siinä, että aina kun viitataan INKEY$-funktioon, luetaan uusi arvo näppäimistöstä.
Eli tee näin:

a$ = INKEY$
IF a$ = CHR$(0) + CHR$(80) THEN ...
IF a$ = CHR$(0) + CHR$(72) THEN ...

Tällä tavalla joka IFissä käsitellään samaa arvoa.

Wukkopi [26.10.2004 09:19:31]

#

Minä olen itse tehnyt alkuvalikot aina näin:

choice = 1
start:
color 7
Print "VALIKKO v0.62"
print
if choice = 1 then color 2 else color 7
print "Valinta 1"
if choice = 2 then color 2 else color 7
print "Valinta 2"
if choice = 3 then color 2 else color 7
print "Valinta 3"

do
select case inkey$
case chr$(0) + "H"
if choice > 1 then choice = choice - 1
goto start
case chr$(0) + "P"
if choice < 3 then choice = choice + 1
goto start
end select
loop

Tein nopeasti joten saattaapi olla hieman virheellinen, mutta kyllä tuon pitäisi toimia, ainakin minulla toimii moitteettomasti...

hunajavohveli [26.10.2004 13:33:37]

#

Jooh, CASE-lauseketta voi myös käyttää. Siihenhän pistetään INKEY$ vain kerran, ja samaa arvoa vertaillaan koko ajan. Tuon GOTOnkin voi muuten tuosta helposti korvata. Nuo "GOTO start"-rivit tuosta vain pois kokonaan, start-rivin tilalle "DO" ja aivan loppuun "LOOP"

Vastaus

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

Tietoa sivustosta