Page 1 of 1

Peli jumittuu valikossa

Posted: Mon Apr 02, 2012 4:49 pm
by VerkkoGuru
Koodarikärpänen puraisi! Nyt teen innoissani UNO-korttipelissä Coolbasic-versiota, katsotaan kuinka selviän vastustajan tekoälyn luonnista, voi olla vaikeaa, mutta nyt en luovuta. Tähän asti olen ihmeekseni saanut koodin kirjoitettua ilman yhtä ainuttakaan ongelmaa, mutta nyt peli jumittuu valikossa. Tässä koodi:

Code: Select all

SCREEN 800,600

Type VASTUSTAJANKORTIT
Field määrä
Field väri
Field tyyppi
Field obj
EndType

Type PELAAJANKORTIT
Field määrä
Field väri
Field tyyppi
Field obj
EndType

FrameLimit 50

Color 255,0,0

Kortit=LoadAnimObject("Kortit.bmp",60,90,0,42)
Text 10,10,"Ladataan...33%"
Box 10,26,33,16
DrawScreen OFF
Wait 10000
Cls

pakka=LoadObject("pakka.bmp")
Text 10,10,"Ladataan...66%"
Box 10,26,66,16
DrawScreen OFF
Wait 2000
Cls 

Pelipöytä=LoadImage("Pelipöytä.bmp")
Text 10,10,"Ladataan 100%"
Box 10,26,100,16
DrawScreen OFF
Wait 2000
Cls

ShowObject kortit,OFF 
Text 10,10,"Valmisterraan...25%"
Box 10,26,25,16
DrawScreen OFF
Wait 5000
Cls

ShowObject pakka,OFF 
Text 10,10,"Valmistellaan...50%"
Box 10,26,50,16
DrawScreen OFF
Wait 500
Cls

PositionObject pakka,-200,-30
Text 10,10,"Valmistellaan...75%"
Box 10,26,75,16
DrawScreen OFF
Wait 2500
Cls 

DrawImage Pelipöytä,0,0
Text 10,10,"Valmistellaan...100%"
Box 10,26,100,16
DrawScreen OFF
Wait 5000

Text 10,10,"Valmista tuli! Paina mitä tahansa nappia jatkaaksesi!"

DrawScreen

WaitKey 

Repeat

If EscapeKey() Then End

Until EscapeKey()

Repeat

DrawImage Pelipöytä,0,0

Color 255,255,0 

Box 60,40,16,60  
Box 60,100,60,16
Box 120,40,16,76

Box 140,30,16,50
Box 140,35,30,16
Box 170,50,16,50

Circle 200,50,32,ON 

Text 60,180,"Paina P-kirjainta päästäksesi pelaamaan."
Text 60,195,"Paina O-kirjainta lukeaksesi pelin säännöt."
Text 60,210,"Paina Q-kirjainta poistuaksesi."

DrawScreen 

If KeyHit(25) Then Gosub  peli
If KeyHit(24) Then Gosub  ohjeet
If KeyHit(16) Then End

Until EscapeKey()

ohjeet:

Cls

AddText "ALOITUS"
AddText ""
AddText "Ensin jokainen pelaaja nostaa kortin, se jolla on suurin kortti aloittaa."
AddText "Jokaiselle pelaajalle jaetaan seitsemän korttia. Keskelle otetaan pakasta aloituskortti,"
AddText "joka EI saa olla erikoiskortti."
AddText ""
AddText "PELIN TAVOITE"
AddText ""
AddText "Pelin tavoitteena on saada kaikki omat kortit loppumaan. Aloituskortin päälle aletaan"
AddText "kasata kortteja, joissa on joko sama numero tai sama väri. Samoja numeroita saa laittaa"
AddText "useita, mutta yhdellä vuorolla saa laittaa vain yhden värin. Jos mitään kortti ei käy,"
AddText "sinun täytyy ottaa pakasta yksi kortti. Jos sinulla on vain yksi kortti, paina nopeasti enteriä."
AddText ""
AddText "ERIKOISKORTIT"
AddText ""
AddText "Pelissä on erikoiskortteja, joilla voi laittaa mutkia vastustajan matkaan."
ShowObject kortit,ON
PositionObject Kortit,20,266
neljäpluskortti=MakeObject()
PaintObject neljäpluskortti,Kortit
PlayObject kortit,7,7
AddText "Tällä kortilla se, jolla on seuraava vuoro, joutuu nostamaan neljä korttia,"
AddText "ja sinä saat valita värin, joka muiden on laitettava pinoon."

DrawScreen

Repeat

If KeyHit(cbkeyspace) Then Return

Until KeyHit(cbkeyspace) 

peli:

End 
Epäilin ensin kirjoittaa tätä tänne, koska minulla on niin paljon jäätyneitä projekteja että...noh... :oops:
Ja vielä paketti [url=http://

Re: Peli jumittuu valikossa

Posted: Mon Apr 02, 2012 4:53 pm
by Latexi95
VerkkoGuru wrote:Koodarikärpänen puraisi! Nyt teen innoissani UNO-korttipelissä Coolbasic-versiota, katsotaan kuinka selviän vastustajan tekoälyn luonnista, voi olla vaikeaa, mutta nyt en luovuta. Tähän asti olen ihmeekseni saanut koodin kirjoitettua ilman yhtä ainuttakaan ongelmaa, mutta nyt peli jumittuu valikossa.
Epäilin ensin kirjoittaa tätä tänne, koska minulla on niin paljon jäätyneitä projekteja että...noh... :oops:
No ajatusten luku ei tahdo olla meidän parhaita taitojamme joten voisit hieman näyttää sitä alkuvalikon koodia? "Jumittumisesta" päätelle suosittelen tarkastamaan, että missään kohti ei jouduta loputtomaan silmukkaan jossa ei ole Drawscreeniä.
Jäätynäitä projekteja on kaikilla todella paljon. Itse olen tainnut saada vain muutaman systeemin aikalailla valmiiksi. Eli ehkä noin 1%:n kaikista aloittamistani/suunnittelemistani projekteista.

Re: Peli jumittuu valikossa

Posted: Mon Apr 02, 2012 4:58 pm
by VerkkoGuru

Code: Select all

Repeat

DrawImage Pelipöytä,0,0

Color 255,255,0 

Box 60,40,16,60  
Box 60,100,60,16
Box 120,40,16,76

Box 140,30,16,50
Box 140,35,30,16
Box 170,50,16,50

Circle 200,50,32,ON 

Text 60,180,"Paina P-kirjainta päästäksesi pelaamaan."
Text 60,195,"Paina O-kirjainta lukeaksesi pelin säännöt."
Text 60,210,"Paina Q-kirjainta poistuaksesi."

DrawScreen 

If KeyHit(25) Then Gosub  peli
If KeyHit(24) Then Gosub  ohjeet
If KeyHit(16) Then End

Until EscapeKey()

ohjeet:

Cls

AddText "ALOITUS"
AddText ""
AddText "Ensin jokainen pelaaja nostaa kortin, se jolla on suurin kortti aloittaa."
AddText "Jokaiselle pelaajalle jaetaan seitsemän korttia. Keskelle otetaan pakasta aloituskortti,"
AddText "joka EI saa olla erikoiskortti."
AddText ""
AddText "PELIN TAVOITE"
AddText ""
AddText "Pelin tavoitteena on saada kaikki omat kortit loppumaan. Aloituskortin päälle aletaan"
AddText "kasata kortteja, joissa on joko sama numero tai sama väri. Samoja numeroita saa laittaa"
AddText "useita, mutta yhdellä vuorolla saa laittaa vain yhden värin. Jos mitään kortti ei käy,"
AddText "sinun täytyy ottaa pakasta yksi kortti. Jos sinulla on vain yksi kortti, paina nopeasti enteriä."
AddText ""
AddText "ERIKOISKORTIT"
AddText ""
AddText "Pelissä on erikoiskortteja, joilla voi laittaa mutkia vastustajan matkaan."
ShowObject kortit,ON
PositionObject Kortit,20,266
neljäpluskortti=MakeObject()
PaintObject neljäpluskortti,Kortit
PlayObject kortit,7,7
AddText "Tällä kortilla se, jolla on seuraava vuoro, joutuu nostamaan neljä korttia,"
AddText "ja sinä saat valita värin, joka muiden on laitettava pinoon."

DrawScreen

Repeat

If KeyHit(cbkeyspace) Then Return

Until KeyHit(cbkeyspace) 

peli:

End 
Tässä vielä se valikko osuus.

Re: Peli jumittuu valikossa

Posted: Mon Apr 02, 2012 5:37 pm
by TheFish
Miksi KeyHitit on drawscreenin jälkeen?
Manuaali wrote:Näppäinten tila päivitetään UpdateGame-kutsun aikana (tai DrawScreenissä, jos UpdateGamea ei kutsuta).

Re: Peli jumittuu valikossa

Posted: Mon Apr 02, 2012 5:47 pm
by Latexi95
TheFish wrote:Miksi KeyHitit on drawscreenin jälkeen?
Manuaali wrote:Näppäinten tila päivitetään UpdateGame-kutsun aikana (tai DrawScreenissä, jos UpdateGamea ei kutsuta).
Tai pikemminkin, miksi tuolla silmukan sisällä ei ole DrawScreeniä?

Re: Peli jumittuu valikossa

Posted: Mon Apr 02, 2012 6:21 pm
by TheFish
Latexi95 wrote:
TheFish wrote:Miksi KeyHitit on drawscreenin jälkeen?
Manuaali wrote:Näppäinten tila päivitetään UpdateGame-kutsun aikana (tai DrawScreenissä, jos UpdateGamea ei kutsuta).
Tai pikemminkin, miksi tuolla silmukan sisällä ei ole DrawScreeniä?
Häh?

Code: Select all

Repeat

... koodia  ...

DrawScreen 

... ne keyhitit ...

Until EscapeKey()

Re: Peli jumittuu valikossa

Posted: Mon Apr 02, 2012 6:30 pm
by Latexi95
TheFish wrote: Häh?

Code: Select all

Repeat

... koodia  ...

DrawScreen 

... ne keyhitit ...

Until EscapeKey()
Katsoin alempaa silmukkaa. Siellä ei ole edes DrawScreeniä silmukan sisällä.

Re: Peli jumittuu valikossa

Posted: Tue Apr 03, 2012 4:06 pm
by VerkkoGuru
TheFish wrote:Miksi KeyHitit on drawscreenin jälkeen?
Manuaali wrote:Näppäinten tila päivitetään UpdateGame-kutsun aikana (tai DrawScreenissä, jos UpdateGamea ei kutsuta).
Sillä nyt ei ole mitään merkitystä vielä. Peli jumittuu, ennenkuin nuo neuvot tulevat edes esiin:
Image Vai vaikuttavatko nuo drawscreenin ees olevat keyhitit? o.o KeyHitit lensi puolivahingossa drawscreenin eteen, koska Text-komentojen jälkeen laitoin vain suoraan drawscreenin :l
Latexi95 wrote:Katsoin alempaa silmukkaa. Siellä ei ole edes DrawScreeniä silmukan sisällä.

Code: Select all

Repeat

If KeyHit(cbkeyspace) Then Return

Until KeyHit(cbkeyspace) 
Tässäkin tarvitaan drawscreeniä, eh?
EDIT:

Code: Select all

AddText "ALOITUS"
AddText ""
AddText "Ensin jokainen pelaaja nostaa kortin, se jolla on suurin kortti aloittaa."
AddText "Jokaiselle pelaajalle jaetaan seitsemän korttia. Keskelle otetaan pakasta aloituskortti,"
AddText "joka EI saa olla erikoiskortti."
AddText ""
AddText "PELIN TAVOITE"
AddText ""
AddText "Pelin tavoitteena on saada kaikki omat kortit loppumaan. Aloituskortin päälle aletaan"
AddText "kasata kortteja, joissa on joko sama numero tai sama väri. Samoja numeroita saa laittaa"
AddText "useita, mutta yhdellä vuorolla saa laittaa vain yhden värin. Jos mitään kortti ei käy,"
AddText "sinun täytyy ottaa pakasta yksi kortti. Jos sinulla on vain yksi kortti, paina nopeasti enteriä."
AddText ""
AddText "ERIKOISKORTIT"
AddText ""
AddText "Pelissä on erikoiskortteja, joilla voi laittaa mutkia vastustajan matkaan."
ShowObject kortit,ON
PositionObject Kortit,20,266
neljäpluskortti=MakeObject()
PaintObject neljäpluskortti,Kortit
PlayObject kortit,7,7
AddText "Tällä kortilla se, jolla on seuraava vuoro, joutuu nostamaan neljä korttia,"
AddText "ja sinä saat valita värin, joka muiden on laitettava pinoon."

DrawScreen
Kun se on jo täällä.[/edit]

Re: Peli jumittuu valikossa

Posted: Tue Apr 03, 2012 4:37 pm
by valscion
VerkkoGuru wrote:
Latexi95 wrote:Katsoin alempaa silmukkaa. Siellä ei ole edes DrawScreeniä silmukan sisällä.

Code: Select all

Repeat

If KeyHit(cbkeyspace) Then Return

Until KeyHit(cbkeyspace) 
Tässäkin tarvitaan drawscreeniä, eh?
Kyllä juurikin niin. Tai UpdateGamea.
TheFish wrote:Miksi KeyHitit on drawscreenin jälkeen?
Manuaali wrote:Näppäinten tila päivitetään UpdateGame-kutsun aikana (tai DrawScreenissä, jos UpdateGamea ei kutsuta).
Eli jos sinulla ei ole DrawScreeniä tahi UpdateGamea, ei KeyHit rekisteröi koskaan tuota välilyönnin painallusta.

Re: Peli jumittuu valikossa

Posted: Tue Apr 03, 2012 4:45 pm
by TheFish
Miksi ihmeessä sanoit, että ohjelma jää jumiin valikossa, ja annoit valikon koodin, jos ohjelma kerran jää jumiin ennen sitä?

Nyt kun katsoin tuota ensimmäiseen viestiin editoimaasi koodia, siinä näyttää olevan tälläinen kohta:

Code: Select all

Repeat

If EscapeKey() Then End

Until EscapeKey()
Elikkä loopataan kunnes EscapeKey() palauttaa toden, ja kun se tekee niin, ohjelma lopetetaan. En nyt tosin ole varma, että toimiiko EscapeKeykään ilman DrawScreeniä.

Re: Peli jumittuu valikossa

Posted: Tue Apr 03, 2012 5:01 pm
by VerkkoGuru
Minä en ymmärrä, miksi Coolbasicissa täytyy päivittää näytön sisältö näppäinten rekisteröintiin? :D

Re: Peli jumittuu valikossa

Posted: Tue Apr 03, 2012 5:54 pm
by valscion
VerkkoGuru wrote:Minä en ymmärrä, miksi Coolbasicissa täytyy päivittää näytön sisältö näppäinten rekisteröintiin? :D
Näppäinten tilan päivitys täytyy tehdä jossain vaiheessa. DrawScreen kun on niin yleinen komento niin se hoitaa näppäinten tilan päivityksen siinä kätevästi. Jos et halua käyttää DrawScreeniä niin saman homman voit tehdä käyttämällä sitä UpdateGamea mistä on mainittukin jo useampaan kertaan.