Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: QB: IF-komennosta

LauriN [22.09.2005 18:11:10]

#

Morjens kaikille, uusi kun täällä olen.
Pientä tietokilpailupeliä QB:llä olen tekemässä, ja tarkoitus oli pärjätä IF-komennolla (koulutehtävä). Päädyin kuitenkin käyttämään CASEa parin ongelman takia.
Pelissä on vaihtoehdot 1-4; miten IF-lausetta (ja/tai DO...LOOP) käyttäen saisi tehtyä niin, että peli looppaa samaa kysymystä niin kauan kunnes jokin numero väliltä 1-4 syötetään, ja siirtyy sitten seuraavaan kysymykseen?
Toivottavasti ei ollut liian sekavaa. :P

Meitsi [22.09.2005 18:39:11]

#

Siitä on jo kauan kun viimeksi QB:tä käytin, mutta jotenkin näin

do while (%vastaus <= 0) or (%vastaus > 4)
    'kysy_käyttäjältä plapla...
loop

Metabolix [22.09.2005 20:01:02]

#

Kannattaa tukeutua QB-oppaaseen.

LauriN [22.09.2005 23:04:00]

#

Eipä mitään, toimii hyvin tuolla koodinpätkällä kun laittaa sen jokaisen kysymyksen ympärille. Ei ehkä selvintä koodia ja joutuu käyttämään saatanallista GOTOa mutta minkäs voit.

Latska [22.09.2005 23:53:44]

#

Millä tavalla tuo vastaus otetaan vastaan? Jos näppäinkoodeilla, niin kokeiles tämmöistä:

do 'loopatataan
vastaus$ = Inkey$
If vastaus$ = "1" or
vastaus$ = "2" or
vastaus$ = "3" or
vastaus$ = "4" then
exit do 'jos ehtolause on tosi, poistutaan loopista.
loop

vastaus = Val(vastaus$) 'muutetaan merkkijono numeroiksi.

'Tähän tulee sitten se oikean vastauksen tarkistus.

Monet varmaan ihmettelevät, että miksi käytin numeroiden tilalla merkkijonoja tarkistushommassa. Tämä estää sen, että joku painaa kirjaimia.

EDIT: Purkkaahan tämä on, mutta en voi sille mitään.

LauriN [23.09.2005 13:28:18]

#

CLS
1
DO WHILE (vastaus <= 0) OR (vastaus > 4)
  PRINT "kysymys jne"
    INPUT "Vastauksesi"; vastaus

  IF vastaus = (mikä kyseisessä kysymyksessä onkaan oikein) THEN
    PRINT "Oikein!"
    ELSE
    PRINT "Väärin"
  END IF
LOOP
SLEEP 1
GOTO 2

Koodi on nyt tuossa lyhykäisyydessään, lopulliseen versioon joko tuo tai case-rakenne. QB valitti tuosta vastaus = Val(vastaus$) osasta, muuten ok. Alkuperäiseen kysymykseen sainkin vastauksen, eli tätä ei sen pidempää tarvitse välttämättä puida.

Vastaus

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

Tietoa sivustosta