Olen aloitteleva koodaja ja käytänQBasicia. Minua ärsyttää kun tekstipelieni siirtymiskohdissa painaa esim. entteriä niin yhtäkkiä on ties missä! "siirtymäkohdan" esimerkki:
CLS
PRINT "jotain textiä"
SLEEP 2
GOTO jonnekin
Toivon pikaista HELPPIÄ!
Tee näin:
1: CLS PRINT "Jotain" INPUT "1 vai 2?", a$ IF a$ = "1" THEN GOTO eka IF a$ = "2" THEN GOTO toka GOTO 1 eka: CLS PRINT "Painoit näppäintä 1" END toka: CLS PRINT "Painoit näppäintä 2" END
Jotenkin noin se oli.
enemmänkin näin
1: CLS PRINT "Jotain" print "Käytettävät näppäimet ovat 1 ja 2" a$ = inkey$ IF a$ = "1" THEN GOTO eka IF a$ = "2" THEN GOTO toka GOTO 1 eka: CLS PRINT "Painoit näppäintä 1" END toka: CLS PRINT "Painoit näppäintä 2" END
lainaus:
enemmänkin näin
1: CLS PRINT "Jotain" print "Käytettävät näppäimet ovat 1 ja 2" a$ = inkey$ IF a$ = "1" THEN GOTO eka IF a$ = "2" THEN GOTO toka GOTO 1 eka: CLS PRINT "Painoit näppäintä 1" END toka: CLS PRINT "Painoit näppäintä 2" END
Tuohan on ihan samanlainen.
eikä ole :)
Laita kumpikin koodi quickbasiciin ja testaa eroja niin huomaat, että ihan erilaisia ovat....
edit: tai siis on ne noin 99% samanlaiset, mutta toiminta on erilainen... input lause odottaa sitä enterin painallusta vaikka numeron olisikin jo laittanut siihen, mutta inkey ei odota, mutta silloin ainakin mä olisin tuon toteuttanut hitusen eri tavalla... ei välttämättä toimi noin, mutta esimerkiksi näin kuitenkin
print "Näppäimet ovat 1 ja 2" do a$ = inkey$ if a$ = "1" then goto jotain if a$ = "2" then goto jokin loop jotain: print "Painoit näppäintä 1" system jokin: print "Painoit näppäintä 2" end
Mitä toi "system" tuola meinaa? onko se niinkuin sama kuin "end"?
joo.... ja ymmärtääkseni end ei voi olla edes keskellä koodia... no jos se on
if a$ = "1" then end
niin toimii vielä, mutta jos se ei ole sitten esimerkiksi lopussa vaan tuolla jotain: kohdassa niin sitten ei pääse tonne jokin kohtaan.... en ole varma, mutta system komennolla toimii niin, että se system voi olla missä vain koodissa....
Ja olisiko vielä varmuutta, juhaz tuntui hiukan epävarmalta :/
edit: tais mennä hiukan offtopiciks
sitä voi kokeilla, mutta tuossa tilanteessa siinä ei taida olla mitään eroa kumpaa käyttää mitä pikaisesti testattuna tuli huomattua :)
edit: Itse olen joskus ohjelmoidessa joutunut tilanteeseen, jossa end on ollut estämässä ohjelman toimimista oikein, mutta kuten siis jo sanoin niin tuo koodipätkä minkä laitoin niin siinä ei näköjään pikaisten testien jälkeen löytynyt syytä käyttää system komentoa vaan end toimi aivan yhtä hyvin.
yks juttu: system käsky sulkee kaikki avoimet tiedostot ja palauttaa ohjauksen käyttöjärjestelmälle.
joo no sen se kai ainakin tekee.... ja se on hyvä ohjelman lopetukseksi, kun ajetaan qbasicilla tiedostoja tyylini qbasic.exe /run tiedosto.bas eikä halua, että se qbasic jää sitten auki, kun ohjelman suoritus loppuu.
Ei kyllä minä nuo "valintakohdat" osaan mutta en niitä missä kaikki toiminta pysähtyy odottamaan että käyttäjä painaa jotain. Ja jos painaa entteriä niin peli on jossain koodin korvessa!
Toi on pitemmän päälle aika hankala, kun niitä eri gotoja kiertyy ihan rutosti.
Pyääh, käytä mun valmista stooria. Heh no ei, mutta kokeilkaa joku beeta että näkis onko bugeja, en ite jaksa. http://koti.mbnet.fi/koodaaja/lataukset/load.
Kyllä END voi olla keskellä koodia ja SYSTEM niin kuin edellä mainittiinkin sanatarkasti "sulkee kaikki avoimet tiedostot ja palauttaa ohjauksen käyttöjärjestelmälle." Jos sää laitat tuon DO-LOOPIN niin sitte ei kyllä pitäis mennä mihinkään korpeen.
Mainittakoon vielä, että jos END voisi olla vain lopussa, siitä ei olisi mitään hyötyä sillä viemeiselle riville ohjelma joka tapauksessa loppuu.
mulla oli joskus ongelma, kun en saanut yhtä koodia toimimaan ja syylinen oli end, joka oli keskellä koodia.
Mä ainakin käyttäisin tällaista:
Print "Paina 1 tai 2" do select case inkey$ case "1" goto 1 case "2" goto 2 end select loop 1: cls print "Painoit numeroa 1" sleep end 2: cls print "Painoit numeroa 2" sleep end
että taas uusi vaihtoehto lisää...
Tossa menee aika sekaisin, jos meinaa tehdä jotain pitkää seikkailua. Tulee esim. goto 157 yms.
Lähetäppäs vähän lähdekoodia niin katsotaan mistä kenkää
purista. comi89@luukku.com
Itse en tee tekstiseikkailu pelejä, ne vain jotenkin sukkaa.
ei tule gogo 157, jos käyttää rivinimiä eikä numeroita
Ja mitä tohon gotojen ettimiseen tulee niin ETSI toiminto on keksitty!!!
Aihe on jo aika vanha, joten et voi enää vastata siihen.