Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: QB: Tekstipeli QBasicilla?

Sivun loppuun

haukotus [17.05.2008 23:37:33]

#

Eli miten voisin tehdä monivalinta tekstipelin qbasicilla koska oikeastaan vain tekstipelien tekoon sen latasin?

tgunner [17.05.2008 23:40:43]

#

Näistä on puhuttu usein. Käytä sivun oikealla puolella olevaa "Haku"-lomaketta. Jos et saa aikaisemmista keskusteluista mitään irti, lue tämä ja sovella.

haukotus [17.05.2008 23:42:58]

#

tgunner kirjoitti:

Näistä on puhuttu usein. Käytä sivun oikealla puolella olevaa "Haku"-lomaketta. Jos et saa aikaisemmista keskusteluista mitään irti, lue tämä ja sovella.

Olen kyllä lukenut tuon mutta tuossa ei ole "väärää vastausta" jossa esim. kuolee ja peli alkaa alusta tuossa voi kokeilla kaikkea eikä voi kuolla tarkoitin vähän laajempaa.
Toivottavasti ymmärsit/ymmärsitte.

tgunner [18.05.2008 00:01:43]

#

No etkö voi tehdä semmosta? Jos osaisit qb:tä, kykenisit tekemään moisen ehdon.

ankka:
cls
print "syötkö rotanmyrkkyä?"
print "1. joo, 2. emmä haluu, 3. ankka"
input $i
if $i = "1" then
    goto joo 'gotoja ei sit suosita, mut meen ton oppaan mukaan
else if $i = "2" then
    goto ei
else
    goto ankka 'peli alusta
end if

joo:
print "no ni, kuolit"
end

ei:
print "et syöny, pääsit pelin läpisdf sdfsdf"
k:
goto k

en oo sit koodannu qb:tä moneen vuoteen, joten syntaksin kaa saattaa olla jotain ongelmia.

haukotus [18.05.2008 00:20:21]

#

Mod. Edit. Älyä niihin lainauksiin...

eikös tossa dos sulkeennu sitten suoraan koska haluaisin että se menee suoraan alku valikkoon kuoleman jälkeen.

Anteeksi tietämättömyyteni/kusipäisyyteni.

PS.Kyllä olen oikeasti näin tyhmä.

Newb [18.05.2008 00:50:51]

#

https://www.ohjelmointiputka.net/oppaat/opas.php?tunnus=qba_2
https://www.ohjelmointiputka.net/oppaat/opas.php?tunnus=qba_3

Kray [18.05.2008 08:48:03]

#

Vaikka en basicia osaakaan, veikkaisin että ihan goto valikko kun on ollut valikko: mutta jotenkin minulla on sellainen tunne että et osaa, ja kysymystesi perusteella et edes yritä opetella vaan haluat suorat vastaukset täältä.

haukotus [18.05.2008 09:21:37]

#

kray kirjoitti:

Vaikka en basicia osaakaan, veikkaisin että ihan goto valikko kun on ollut valikko: mutta jotenkin minulla on sellainen tunne että et osaa, ja kysymystesi perusteella et edes yritä opetella vaan haluat suorat vastaukset täältä.

Kyllä minä jotenkin (huonosti)osaan eikä niiden vastausten tarvitse olla suoria
mutta mielellään melko tarkkoja.
Oikeastaan minulla on pelinteko jo menossa mutta siinä on yksi brobleema en millään jaksaisi kirjoittaa koko koodia tähän joten yritän kuvailla sen parhaani mukaan.
alussa on
1.aloita peli
2.lopeta peli
tässä kohta on kyllä gotot sun muut ja looppi
ne toimii ihan normalisti ja niinkuin pitääkin tulee pätkä tarinaa ja sitten uudet
vaihtoehdot 1.osta olutta
2.tutki kapakkaa
3.käy wc:ssä

nyt kun koitan laittaa.
1:
blaablaablaa ostit olutta
niin se alkaa herjaamaan dublicate label tässäkin on gotot oikein

Chaosworm [18.05.2008 09:54:28]

#

Voi tehdä näinkin:

aLkUvAlIkKo:
cls
print "Mitä teeskentelet"
print "1.alotan pelin"
print "2.suljen pelin"
input y
if y = 1 then gosub alotuspaikka
if y = 2 then end
gosub alkuvalikko

alotuspaikka:
cls:
print "Muaahhahahahahahaha luulitkos että pääset pelaamaan vastaamalla 1?"
print "huitase jotain näppäintä xDxDxD"
sleep
gosub alkuvalikko

hunajavohveli [18.05.2008 12:57:55]

#

Chaosworm kirjoitti:

Voi tehdä näinkin:

Eikö GOSUB-käskyä käytettäessä kutsukohtaan ole mahdollista palata jälleen RETURN-käskyllä? Tällöin kutsukohta täytyy tallentaa jonkinlaiseen pinoon, jonka koko kasvaa tuossa nyt rajattomasti jokaisella GOSUB-kutsulla, kunnes muisti loppuu kesken ja ohjelma kaatuu. GOTO lienee siis parempi tuohon.

Cornix [18.05.2008 16:51:39]

#

Ohjelmassa ei voi olla montaa kohtaa, jotka olisi kaikki nimetty samalla nimellä. Sun täytyy keksiä jokaiselle kohdalle oma kuvaava nimi - esimerkiks tossa sun pelissäs tutkikapakkaa, kayvessassa ja loppu vois olla hyviä.

Ja joo, käytä GOTO:a niinku hunajavohveli neuvoi äläkä GOSUB:ia :)

Muista aina jokaisen vastauksen tarkistamis-iffien jälkeen kirjoittaa GOTO kohtajossaoltiinjust, jottei väärä vastaus johda siihen, että peli vain etenee seuraavaan koodissa olevaan kohtaan. :)

Tässä pieni esimerkki yksinkertaisen tekstiseikkailun tekemisestä. GOTO:n ja GOSUB:n eron pitäisi myös selvitä.

alku:
CLS
PRINT "Valitse 1, 2 tai 3"
PRINT "1) Osta olutta"
PRINT "2) Käy vessassa"
PRINT "3) Lopeta"
INPUT valinta$
IF valinta$ = "1" THEN GOTO ostaolutta
IF valinta$ = "2" THEN GOTO kayvessassa
IF valinta$ = "3" THEN GOTO loppu
GOSUB annamahdollinenvalinta     'jos ei valittu mitään, käydään gosubissa nimeltä annamahdollinenvalinta ja palataan takaisin tälle riville.
GOTO alku                  'palataan alkuvalikkoon

ostaolutta:
CLS
PRINT "Ostit olutta. Siinä oli myrkkyä. Kuolit."
SLEEP
GOTO loppu

kayvessassa:
CLS
PRINT "Olet vessassa. Mitä teet?"
PRINT "1) Pese kädet"
PRINT "2) Takaisin"
INPUT valinta$
IF valinta$ = "1" THEN GOTO pesekadet
IF valinta$ = "2" THEN GOTO alku
GOSUB annamahdollinenvalinta: GOTO kayvessassa 'tässä kerrotaan taas että täytyy valita mahdollinen numero ja mennään takaisin kysymään valintaa

annamahdollinenvalinta:
PRINT "Valintasi ei ole mahdollinen! Syötä valintasi uudelleen!"
SLEEP
RETURN 'palataan sille riville, josta tätä gosubia kutsuttiin

loppu:
CLS
PRINT "Peli ohi."
SLEEP
END

Toivottavasti tuo toimii. En testannut QB:llä. :)

haukotus [18.05.2008 22:29:15]

#

Kiitos cornix nyt toimii ja sain tehtyä peliä jo hieman eteenpäinkin :)


Sivun alkuun

Vastaus

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

Tietoa sivustosta