Miten voin kokeilla tekemääni tekstiseikkailua QB:llä
Ööh mistä voit tietää toimiiko se jos et ole testannut sitä vielä? Jos olet QB:ssä paina F5.
kiitti mut nyt on toinen ongelma miten voin jatkaa sitä niinku sille blaablaa paina 1 mene kotiin paina 2 hyppää järveen. painan yks ja sitte se jatkuis vaik olet kotona mitä teet? paina 1 lue kirjaa paina 2 ammu ittes. Sitte painan kaks ammuit itsesi ja niin päättyi james bondin elämä.
cls alku: print "Noniin nyt mitäs tehdään" print "1. Mene kotiin" print "2. Hyppää järveen" input a if a=1 then goto koti if a=2 then goto kuolo print "Valitse joko 1 tai 2" goto alku koti: print "Hihhei nyt ollaan kotona jännää eikö?" print "1. Luetaan kirjaa jee!" print "2. Ammutaan itsemme ?!" input a if a=1 then goto kirja if a=2 then goto kuolo print "Vaalitseee ykkönen tai kakkonen!" goto koti kirja: print "+----------+" print "|##########|" print "|Punahilkka|" print "|##########|" print "|##########|" print "|##########|" print "|##########|" print "+----------+" print print "Joo kiva eikös?!" do :loop until inkey$<>"" goto koti kuolo: print "ÄÄK!!! Kuolit!!!" end
Hieno peli ;)
Tekisin näin, jos olisi isompi kuin tuommoinen tekstiseikkailu kyseessä:
CLS DIM v AS STRING, a AS INTEGER v = "alku" DO IF v = "alku" THEN PRINT " 1.Mee kotiin kirjaa lukeen" PRINT " 2.Hyppää järveen" INPUT a IF a = 1 THEN v = "koti" IF a = 2 THEN v = "järvi" END IF IF v = "koti" THEN PRINT "luet punahilkkoo" END END IF IF v = "järvi" THEN PRINT "Hukuit järveen" END END IF LOOP
Tässä voi lisäillä tapahtumia niin paljon kuin haluaa, ja minun mielestäni on paljon selkeämpi. Eikä tarvitse erikseen tarkistaa onko pelaajan numero oikeaa kokoluokkaa vaan jos ei ole, niin kysymys toistetaan. Näin minäkin olen tehnyt vitosluokalla 700-rivisen tekstiseikkailupelin:)
Ja jos tekstiseikkailu on todella laaja, kannattaa tapahtumat tallentaa erilliseen tekstitiedostoon sopivassa muodossa, jolloin QB:tä osaamatonkin voi niitä kirjoittaa.
Hallitsen kyllä tekstiseikkailupelit, mutta useissa oppaissa sanotaan että GOTO:n käyttö pitäisi olla mahdollisimman vähäistä. Antti QBasicin guruna voi varmaan selventää?
GOTO tekee koodista hirmuisen sotkuisen ja turhan epäkäytännöllisen, koska GOTOsta ei voi palata takaisin kuten aliohjelmista. Kannattaa käyttää GOSUB -käskyä tai aliohjelmia. Noh selittäkää joku tuo tarkemmin.
Mutta onko järkeä laittaa noin pieneen peliin subbeja?
No ei oikeastaan, mutta mainitsin noin globaalisti, jos isompaa peliä alkaa tekemään.
Minulla on ainakin SUBeissa yksi iso mutta, nimittäin se että muuttujat häviävät subiin mentäessä. Tähänkin on varmasti joku hyvin yksinkertainen ratkaisu, jos joku tietää, voisi kertoo minullekkin.
Muuttujat täytyy määrittää SHARED komennolla esim.
DIM SHARED muuttuja
tai
COMMON SHARED muuttuja
Ahaa..! Tuosta tulee varmasti olemaan hyötyä, siis tuosta DIM SHARED pätkästä... olen tehnyt about 450 rivin pituisen manageripelin ja käytän siinä aliohjelmia.
Niin minullekkin, aikasemmin on pitänyt tehdä GOTO tai GOSUB purkkaviritelmillä, tai txtseikkailutapauksessa parhaaksi on osoittautunut tuo yllä tekemäni esimerkki.
Aihe on jo aika vanha, joten et voi enää vastata siihen.