Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: QB: QBasic- ongelma

Sivun loppuun

GoodBytes [23.10.2003 18:21:25]

#

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Ä!

The Ohjelmoija [23.10.2003 18:43:23]

#

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.

juhaz [23.10.2003 18:50:14]

#

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

The Ohjelmoija [23.10.2003 19:10:21]

#

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.

juhaz [23.10.2003 19:18:33]

#

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

Dustbin [23.10.2003 22:05:43]

#

Mitä toi "system" tuola meinaa? onko se niinkuin sama kuin "end"?

juhaz [23.10.2003 22:19:09]

#

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....

Dustbin [23.10.2003 22:28:13]

#

Ja olisiko vielä varmuutta, juhaz tuntui hiukan epävarmalta :/

edit: tais mennä hiukan offtopiciks

juhaz [23.10.2003 22:35:07]

#

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.

rndprogy [23.10.2003 22:47:55]

#

yks juttu: system käsky sulkee kaikki avoimet tiedostot ja palauttaa ohjauksen käyttöjärjestelmälle.

juhaz [24.10.2003 00:12:12]

#

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.

GoodBytes [07.11.2003 19:42:03]

#

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!

Dustbin [07.11.2003 22:02:46]

#

Toi on pitemmän päälle aika hankala, kun niitä eri gotoja kiertyy ihan rutosti.

sooda [08.11.2003 22:36:48]

#

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.php?file=stoori.zip

hunajavohveli [11.11.2003 18:42:50]

#

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.

hunajavohveli [11.11.2003 18:43:40]

#

Mainittakoon vielä, että jos END voisi olla vain lopussa, siitä ei olisi mitään hyötyä sillä viemeiselle riville ohjelma joka tapauksessa loppuu.

juhaz [11.11.2003 19:25:08]

#

mulla oli joskus ongelma, kun en saanut yhtä koodia toimimaan ja syylinen oli end, joka oli keskellä koodia.

Wukkopi [12.11.2003 09:57:18]

#

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ää...

Dustbin [12.11.2003 20:39:34]

#

Tossa menee aika sekaisin, jos meinaa tehdä jotain pitkää seikkailua. Tulee esim. goto 157 yms.

comi [17.11.2003 19:24:40]

#

Lähetäppäs vähän lähdekoodia niin katsotaan mistä kenkää
purista. comi89@luukku.com

Wukkopi [01.12.2003 11:47:57]

#

Itse en tee tekstiseikkailu pelejä, ne vain jotenkin sukkaa.

hunajavohveli [02.12.2003 14:29:15]

#

ei tule gogo 157, jos käyttää rivinimiä eikä numeroita

Gaxx [02.12.2003 22:56:40]

#

Ja mitä tohon gotojen ettimiseen tulee niin ETSI toiminto on keksitty!!!


Sivun alkuun

Vastaus

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

Tietoa sivustosta