Peli jumittuu valikossa

Voit pyytää apua ohjelmointiongelmiin täältä.
Post Reply
VerkkoGuru
Member
Posts: 73
Joined: Sat Feb 25, 2012 4:42 pm

Peli jumittuu valikossa

Post by VerkkoGuru » Mon Apr 02, 2012 4:49 pm

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://
Attachments
Uuno-projekti.rar
Tämä paketti...media sisältöineen.
(36.06 KiB) Downloaded 171 times

User avatar
Latexi95
Guru
Posts: 1165
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: Peli jumittuu valikossa

Post by Latexi95 » Mon Apr 02, 2012 4:53 pm

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.

VerkkoGuru
Member
Posts: 73
Joined: Sat Feb 25, 2012 4:42 pm

Re: Peli jumittuu valikossa

Post by VerkkoGuru » Mon Apr 02, 2012 4:58 pm

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.

TheFish
Developer
Developer
Posts: 477
Joined: Mon Aug 27, 2007 9:28 pm
Location: Joensuu

Re: Peli jumittuu valikossa

Post by TheFish » Mon Apr 02, 2012 5:37 pm

Miksi KeyHitit on drawscreenin jälkeen?
Manuaali wrote:Näppäinten tila päivitetään UpdateGame-kutsun aikana (tai DrawScreenissä, jos UpdateGamea ei kutsuta).
CoolBasic henkilökuntaa
Kehittäjä

User avatar
Latexi95
Guru
Posts: 1165
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: Peli jumittuu valikossa

Post by Latexi95 » Mon Apr 02, 2012 5:47 pm

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

TheFish
Developer
Developer
Posts: 477
Joined: Mon Aug 27, 2007 9:28 pm
Location: Joensuu

Re: Peli jumittuu valikossa

Post by TheFish » Mon Apr 02, 2012 6:21 pm

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()
CoolBasic henkilökuntaa
Kehittäjä

User avatar
Latexi95
Guru
Posts: 1165
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: Peli jumittuu valikossa

Post by Latexi95 » Mon Apr 02, 2012 6:30 pm

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

VerkkoGuru
Member
Posts: 73
Joined: Sat Feb 25, 2012 4:42 pm

Re: Peli jumittuu valikossa

Post by VerkkoGuru » Tue Apr 03, 2012 4:06 pm

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]

User avatar
valscion
Moderator
Moderator
Posts: 1592
Joined: Thu Dec 06, 2007 8:46 pm
Location: Espoo
Contact:

Re: Peli jumittuu valikossa

Post by valscion » Tue Apr 03, 2012 4:37 pm

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

TheFish
Developer
Developer
Posts: 477
Joined: Mon Aug 27, 2007 9:28 pm
Location: Joensuu

Re: Peli jumittuu valikossa

Post by TheFish » Tue Apr 03, 2012 4:45 pm

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ä.
CoolBasic henkilökuntaa
Kehittäjä

VerkkoGuru
Member
Posts: 73
Joined: Sat Feb 25, 2012 4:42 pm

Re: Peli jumittuu valikossa

Post by VerkkoGuru » Tue Apr 03, 2012 5:01 pm

Minä en ymmärrä, miksi Coolbasicissa täytyy päivittää näytön sisältö näppäinten rekisteröintiin? :D

User avatar
valscion
Moderator
Moderator
Posts: 1592
Joined: Thu Dec 06, 2007 8:46 pm
Location: Espoo
Contact:

Re: Peli jumittuu valikossa

Post by valscion » Tue Apr 03, 2012 5:54 pm

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