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
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
Kannattaa tukeutua QB-oppaaseen.
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.
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.
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.
Aihe on jo aika vanha, joten et voi enää vastata siihen.