Tekstipelin muuttujan ongelma!

Voit pyytää apua ohjelmointiongelmiin täältä.
Post Reply
User avatar
TukeKoodi
Active Member
Posts: 142
Joined: Thu Feb 03, 2011 7:40 pm
Location: C:\Työpöytä

Tekstipelin muuttujan ongelma!

Post by TukeKoodi »

Eli, projektina on työttömästä Makesta tarinaa kertova pienehkö tekstipeli.
Olet kadulla ja sinulla on mahdollisuus yrittää nyysiä vaastaantulevalta rahaa.
Joko onnistut ja saat 20 Euroa, tai mummo lätkäisee sinua salkulla ja et saa mitään.
Minulla on muuttuja "rahamaara" johon lisätään 20 jos nyysiminen onnistuu.
Kun peli palaa kadulle (pääsilmukka) rahan määrä on edelleen nolla.
Raha ei siis päivity, vaikka sen pitäisi?
(Kohta mummon_ryöstö_läpi)
Ratkaisu tuntuu olevan niin silmien edessä etten itsekään näe sitä.
Apua kaivataan!
Tässä koodi: (tuo on siis kesken)

Code: Select all

Goto katu_vapaa
//Intro
//Valikko
Repeat
Text 50, 0, "Työtön Make v.1.1"
Text 0, 40, "Tehtävänäsi on auttaa"
Text 0, 60, "työtöntä Makea selviämään työttämyyden haasteista"
Text 50, 120, "Paina a aloittaaksesi tarinan"
Text 50, 140, "Tai x poistuaksesi"
If KeyHit(cbKeyA) Then Goto tarinan_alku
If KeyHit(cbKeyX) Then MakeError "Lopetit"
//Ehdot
DrawScreen
Until EscapeKey()
//Intron tarina
tarinan_alku:
ClearText
AddText "Sinä olet Make, 50 vuotta."
DrawScreen
AddText "Olet työtön"
DrawScreen
Wait 3000
AddText "Sossusta ei rahaa tipu,"
DrawScreen
Wait 3000
AddText "Mutta jostakin ruokaa on saatava"
DrawScreen
Wait 5000
ClearText
AddText "Voit oleilla kaupassa"
DrawScreen
Wait 3000
AddText "ja kadulla."
DrawScreen
Wait 3000
AddText "Kaupasta voit myös varastaa ruokaa,"
DrawScreen
Wait 3000
AddText "mutta kiinnijäämisen riski on olemassa."
DrawScreen
Wait 5000
ClearText
katu_vapaa:
ClearText
DrawScreen
Wait 2000
rahamäärä=0
onkomummoryöstetty=0
Repeat
rahamaara=0
ei_onnistu=Rand(0,1)
Text 0,0, "Olet kadulla."
If onkomummoryöstetty=0 Then
Text 0,20, "a) Voit yrittää nyysiä mummolta rahaa"
EndIf
Text 0,40, "b) Voit yrittää nyysiä kaupasta"
Text 0,80, "Mitä teet?"
Text 0,150, "Rahat: "+rahamaara
If KeyHit (cbKeya) And onkomummoryöstetty=0 Then Goto mummon_ryöstö
//If KeyHit (cbKeyB) Then Goto kauppa
DrawScreen
Until KeyHit(cbKeya)
ClearText
mummon_ryöstö:
Repeat
If ei_onnistu=1 Then 
Goto mummon_ryöstö_läpi
rahamaara +20
Else
Goto mummon_ryöstö_kiinni
EndIf
Until KeyHit(28)
ClearText
mummon_ryöstö_läpi:
ClearText
Repeat
rahamaara+20
Text 0,0, "Onnistuit nyysimään mummolta!"
Text 0,20, "Sait häneltä 20 euroa!"
Text 0,300, "Rahat: "+rahamaara
Wait 3000
ClearText
Goto katu_vapaa
Until KeyHit(28)
mummon_ryöstö_kiinni:
ClearText
Repeat 
Text 0,0, "Mummo löi sinua salkulla!"
Text 0,20, "Et saanut rahaa!"
Wait 3000
onkomummoryöstetty=onkomummoryöstetty+1
Goto katu_vapaa
Until KeyHit(28)
EDIT:

Tuo Goto katu_vapaa on vain testausta varten ettei joka kerta tarvitsisi käydä introa läpi :D

Aloittelija, koodaaja, jotain...
CbFUN :D
User avatar
Jonez
Devoted Member
Posts: 575
Joined: Mon Aug 27, 2007 8:37 pm

Re: Tekstipelin muuttujan ongelma!

Post by Jonez »

Rivillä 47 asetat aina rahamäärän nolliin, kun palaat kadulle.

Edit. SEKÄ rivillä 50 :) Kannattaa rajoittaa sitä rahamäärän nollaamista ;)
-Vuoden 2008 aloittelijan ystävä -palkinnon voittaja-
Image <- protestipelikilpailun voittaja.
Space War
atomimalli
Moderator
Moderator
Posts: 227
Joined: Wed Aug 29, 2007 3:55 pm

Re: Tekstipelin muuttujan ongelma!

Post by atomimalli »

Joo. Tapahtumat, joita ei halua toistaa, tulee tehdä vaikka ennen silmukkaa. Lisäksi huomaan, että olet tehnyt gotoilla repeatin tehtävän (lopun goto katuvapaa). Waitit kannattaa korvata omalla funktiolla, jonka voi skipata painamalla nappia.

Code: Select all

function odota(aika)
a=timer()
repeat
until timer()>a+aika or keyhit joku
endfunction
User avatar
esa94
Guru
Posts: 1855
Joined: Tue Sep 04, 2007 5:35 pm

Re: Tekstipelin muuttujan ongelma!

Post by esa94 »

atomimalli wrote:Waitit kannattaa korvata omalla funktiolla, jonka voi skipata painamalla nappia.

Code: Select all

function odota(aika)
a=timer()
repeat
until timer()>a+aika or keyhit joku
endfunction
Eikös tämä vie aika kiitettävästi prosessoritehoa?
User avatar
valscion
Moderator
Moderator
Posts: 1599
Joined: Thu Dec 06, 2007 7:46 pm
Location: Espoo
Contact:

Re: Tekstipelin muuttujan ongelma!

Post by valscion »

esa94 wrote:
atomimalli wrote:Waitit kannattaa korvata omalla funktiolla, jonka voi skipata painamalla nappia.

Code: Select all

function odota(aika)
a=timer()
repeat
until timer()>a+aika or keyhit joku
endfunction
Eikös tämä vie aika kiitettävästi prosessoritehoa?
Tuonne silmukkaan sisään juu kannattaa laittaa vaikkapa "Wait 5" tai vastaava arvo, niin prosessorinkulutus on lähes nollissa.
cbEnchanted, uudelleenkirjoitettu runtime. Uusin versio: 0.4.1 — Nyt myös sorsat GitHubissa!
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
Post Reply