Page 12 of 154
Re: Tyhmät kysymykset
Posted: Sat Dec 08, 2007 9:10 pm
by tuhoojabotti
Zrazy_Coder tässäpä sulle vastaus tässä on 7 framea mutta samalla tavalla se toimii 2 framesellakin kunhan drawimagessa on oikeat framet muuten tulee MAVia tosin tämä toimii vaan kuvilla...
Code: Select all
anim=LoadAnimImage("Media/note.bmp",32,32,0,8)
MaskImage anim,cbmagenta
Repeat
If MouseX()>0 And MouseY()>0 And MouseX()<32 And MouseY()<32 Then
DrawImage anim,0,0,3//tyhjä
Else
DrawImage anim,0,0,7 //huutomerkki
EndIf
DrawScreen
Forever
Re: Tyhmät kysymykset
Posted: Sat Dec 08, 2007 9:22 pm
by Zrazy_Coder
Hmph.Kyllä tiiän miten toi tehään ja toimii se mun juttu jos siinä on yks animoitu painike, mutta jos siinä on kaks ja jos vie hiiren sen päälle joka on koodattu ennemmin niin mav sen joka on koodattu sen ensimmäisen jälkee toimii.Sor
Re: Tyhmät kysymykset
Posted: Sun Dec 09, 2007 6:39 pm
by evo
Miten pystyy tekemään kahden saman tyypin objektin välisen törmäyksen, esim. kun kaksi esimerkki.TYYPPI - objektia törmäävät, ne tuhotaan.
Re: Tyhmät kysymykset
Posted: Sun Dec 09, 2007 8:28 pm
by regalis
Code: Select all
For esimerkki.TYYPPI = Each TYYPPI
For esimerkki2.TYYPPI = Each TYYPPI
SetupCollision esimerkki\obj, esimerkki2\obj, 2, 2, 1
Next esimerkki2
Next esimerkki
Re: Tyhmät kysymykset
Posted: Sun Dec 09, 2007 8:57 pm
by Jonez
Tuo regalisin koodi aiheuttaa mavin, koska siinä yritetaan asettaa jokaiselle objektille törmäys itsensä kanssa.
Code: Select all
Type UKOT
Field obj
End Type
ukko = LoadObject("Media\guy.bmp", 72)
ShowObject ukko, OFF
For i = 1 To 10
nu.UKOT = New(UKOT)
nu\obj = CloneObject(ukko)
For iu.UKOT = Each UKOT
If iu <> nu Then //Varmistetaan että ei aseteta törmäystä itsensä kanssa.
SetupCollision nu\obj, iu\obj, 2, 2, 2 //Asetetaan törmäys
SetupCollision iu\obj, nu\obj, 2, 2, 2
EndIf
Next iu
Next i
Re: Tyhmät kysymykset
Posted: Mon Dec 10, 2007 3:22 pm
by maukka
Miks tää ei toimi?
Code: Select all
FrameLimit 40 'rajoita nopeutta
kartta = LoadMap("Media\cdm2.til","Media\tileset.bmp")
PlayObject kartta,0,0,1
ukko = LoadObject ("Media\guy.bmp",72)
SetupCollision ukko, kartta, 1, 4, 2
Repeat
If GetMap(3,ObjectX(ukko),ObjectY(ukko),kartta)=1 Then Goto kartta2
kartta2 = LoadMap ("Media/testmap.til","Media/tileset.bmp")
If LeftKey() Then TurnObject ukko,5
If RightKey() Then TurnObject ukko,-5
If UpKey() Then MoveObject ukko,2
If DownKey() Then MoveObject ukko,-2
UpdateGame
CloneCameraPosition ukko
DrawScreen
Forever
Re: Tyhmät kysymykset
Posted: Mon Dec 10, 2007 5:16 pm
by Pate5
maukka wrote:Miks tää ei toimi?
Code: Select all
FrameLimit 40 'rajoita nopeutta
kartta = LoadMap("Media\cdm2.til","Media\tileset.bmp")
PlayObject kartta,0,0,1
ukko = LoadObject ("Media\guy.bmp",72)
SetupCollision ukko, kartta, 1, 4, 2
Repeat
If GetMap(3,ObjectX(ukko),ObjectY(ukko),kartta)=1 Then Goto kartta2
kartta2 = LoadMap ("Media/testmap.til","Media/tileset.bmp")
deleteobject kartta
endif
If LeftKey() Then TurnObject ukko,5
If RightKey() Then TurnObject ukko,-5
If UpKey() Then MoveObject ukko,2
If DownKey() Then MoveObject ukko,-2
UpdateGame
CloneCameraPosition ukko
DrawScreen
Forever
Tässä on moniakin virheitä, mutta olet oikeilla jäljillä.
Katsoppa manuaalista GoTo. Sillä ei ladata karttoja vaan liikutaan ohjelmassa.
Korjattu koodi:
Code: Select all
FrameLimit 40 'rajoita nopeutta
kartta = LoadMap("Media\cdm2.til","Media\tileset.bmp")
PlayObject kartta,0,0,1
ukko = LoadObject ("Media\guy.bmp",72)
SetupCollision ukko, kartta, 1, 4, 2
Repeat
If GetMap(3,ObjectX(ukko),ObjectY(ukko),kartta)=1 Then
kartta2 = LoadMap ("Media/testmap.til","Media/tileset.bmp")
If LeftKey() Then TurnObject ukko,5
If RightKey() Then TurnObject ukko,-5
If UpKey() Then MoveObject ukko,2
If DownKey() Then MoveObject ukko,-2
UpdateGame
CloneCameraPosition ukko
DrawScreen
Forever
Tämä toimii kuitenkin vain yhden kartan kanssa. Jos haluat monta leveliä, tee kartta-muuttuja, jonka mukaan maa ladataan. Suosittelisin myös, että maan vaihtuessa kaikki poistetaan, ellet halua välttämättä seuraavaan maahan kaikkia samoja objekteja.
-Pate5
Re: Tyhmät kysymykset
Posted: Tue Dec 11, 2007 8:50 am
by evo
Tarkoitan siis, että minulla on monta boksi\obj - objektia BOKSIT tyypistä, ja niiden välille pitäisi saada törmäystunnistus.
Code: Select all
if objectsoverlap(boksi\obj,boksi\obj) then blaablaablaa
Tuo ei toimi, tai siis toimii, mutta silloin boksi\obj koskee aina myös
itseensä.
Tuota Jonezin koodia en tajunnut.
Re: Tyhmät kysymykset
Posted: Tue Dec 11, 2007 9:14 am
by Pate5
evo wrote:Tarkoitan siis, että minulla on monta boksi\obj - objektia BOKSIT tyypistä, ja niiden välille pitäisi saada törmäystunnistus.
Code: Select all
if objectsoverlap(boksi\obj,boksi\obj) then blaablaablaa
Tuo ei toimi, tai siis toimii, mutta silloin boksi\obj koskee aina myös
itseensä.
Tuota Jonezin koodia en tajunnut.
Tuossa jonezin koodissahan näytettiin juuri tuota.
Code: Select all
type boksit 'luodaan BOKSIT-tyyppi
field obj
endtype
laatikko=loadobject("images/laatikko.png") 'ladataan laatikko-objekti
for i=1 to 5 'luodaan 5 laatikkoa
boksi.boksit=new(boksit)
boksi\obj=cloneobject(laatikko)
next i
for boksi.boksit=each boksit 'asetetaan kaikki laatikot törmäämään toisiinsa
for boksi2.boksit=each boksit
if boksi2<>boksi then
setupcollision boksi\obj,boksi2\obj,1,1,2
setupcollision boksi2\obj,boksi\obj,1,1,2
endif
next boksi2
next boksi
Tuossa viimeisessä kohdassa, tyypin kaikki jäsenet käydään läpi eri "nimillä". Toinen nimi on boksi, ja toinen boksi2. Jos boksi ja boksi2 eivät ole sama (<>), niin ne laitetaan törmäämään toisiinsa.
Ymmärsitkö? Yritä ainakin copy-pastettaa tuo koodiisi.
EDIT:Jos haluat ObjectsOverlap-törmäyksen, tee se näin:
Code: Select all
for boksi.boksit=each boksit 'käydään boksit läpi
for boksi2.boksit=each boksit
if boksi2<>boksi then
if objectsoverlap(boksi\obj,boksi2\obj) then blaablaa
endif
next boksi2
next boksi
[/edit]
Re: Tyhmät kysymykset
Posted: Tue Dec 11, 2007 10:42 am
by Marcoder
Pate5 wrote:Tuossa viimeisessä kohdassa, tyypin kaikki jäsenet käydään läpi eri "nimillä". Toinen nimi on boksi, ja toinen boksi2.
Tuolla systeemillä loopataan ihan turhaan sillä siinä kaikkia jäseniä verrataan keskenään kahteen kertaan.
Koska CB:n tehot on muutenkin aika kortilla niin optimoidaan vähän ja seuraava yksinkertainen esimerkki kertoo varmasti kaiken.
Code: Select all
SCREEN 800, 600
Type boksit
Field num
EndType
For i = 1 To 5
b.boksit = New(boksit)
b\num = i
Next i
Print "TAPA 1"
loop = 1
For boksi.boksit = Each boksit
For boksi2.boksit = Each boksit
Print "Boksi " + boksi\num + " vs. Boksi " + boksi2\num + " (" + loop + ")"
loop + 1
Next boksi2
Next boksi
Print ""
Print "TAPA 2"
loop = 1
For boksi.boksit = Each boksit
boksi2 = After(boksi)
While boksi2 <> NULL
Print "Boksi " + boksi\num + " vs. Boksi " + boksi2\num + " (" + loop + ")"
loop + 1
boksi2 = After(boksi2)
Wend
Next boksi
WaitKey
Re: Tyhmät kysymykset
Posted: Tue Dec 11, 2007 2:21 pm
by Pate5
Marcoder wrote:Pate5 wrote:Tuossa viimeisessä kohdassa, tyypin kaikki jäsenet käydään läpi eri "nimillä". Toinen nimi on boksi, ja toinen boksi2.
Tuolla systeemillä loopataan ihan turhaan sillä siinä kaikkia jäseniä verrataan keskenään kahteen kertaan.
Koska CB:n tehot on muutenkin aika kortilla niin optimoidaan vähän ja seuraava yksinkertainen esimerkki kertoo varmasti kaiken.
Code: Select all
SCREEN 800, 600
Type boksit
Field num
EndType
For i = 1 To 5
b.boksit = New(boksit)
b\num = i
Next i
Print "TAPA 1"
loop = 1
For boksi.boksit = Each boksit
For boksi2.boksit = Each boksit
Print "Boksi " + boksi\num + " vs. Boksi " + boksi2\num + " (" + loop + ")"
loop + 1
Next boksi2
Next boksi
Print ""
Print "TAPA 2"
loop = 1
For boksi.boksit = Each boksit
boksi2 = After(boksi)
While boksi2 <> NULL
Print "Boksi " + boksi\num + " vs. Boksi " + boksi2\num + " (" + loop + ")"
loop + 1
boksi2 = After(boksi2)
Wend
Next boksi
WaitKey
Niinpä. Itselleni ei tullut mieleen noita After- ja Before-komentoja käyttää, koska itse en niitä ole melkein yhtään käyttänyt. Tapasi on kyllä nopeampi, mutta varmaankin hiukan vaikea aloittelijoille. Tästä on kyllä hyötyä ainakin isommilla määrillä.
Re: Tyhmät kysymykset
Posted: Thu Dec 13, 2007 4:50 pm
by vieras
Väsään tässä tankkiammuskelua, ja kohtasin MAV-ongelman: kun tuhoan "vihun" tankin, toimii homma muuten (eli tankki poistetaan), mutta kun ammun vihutankin tuhoamisen jälkeen laukauksen, tulee MAV (peli siis pyörii muuten, pystyn liikuttamaan tankkia jne, mutta heti ammuttaessa pukkaa MAV)... Tässä koodipätkät joissa virheiden luulisi olevan:
Code: Select all
'Screenit ja FrameLimitit...
'tyyppien määritys
Type AMMUS
Field obj
End Type
Type TANKKI
Field obj
Field kesto As Float
Field polttoaine As Float
Field vauhti As Float
End Type
'objektien lataus (näiden lisäksi kartta ja muutama ääni)
vaunu1 = LoadObject ("vaunu1.bmp",72)
ShowObject vaunu1, OFF
vaunu2 = LoadObject ("vaunu2.bmp",72)
ShowObject vaunu2, OFF
pati = LoadObject ("ammus.bmp")
ShowObject pati, OFF
'OMA VAUNU
OMA.TANKKI = New(TANKKI)
OMA\obj = CloneObject(vaunu1)
OMA\kesto = 100
OMA\polttoaine = 100
'VIHUN VAUNU
VIHU.TANKKI = New(TANKKI)
VIHU\obj = CloneObject(vaunu2)
VIHU\kesto = 100
VIHU\polttoaine = 100
'...objektien sijoittelu, törmäystunnistukset
Repeat
'sälää, kontrollit...
'ammuntasysteemi
If KeyHit(cbKeyRControl) And reload=0 Then
luoti.AMMUS = New(AMMUS) 'luo uusi ammus
luoti\obj=CloneObject(pati) 'tee klooni
'asetetaan pati samaan paikkaan
CloneObjectPosition luoti\obj,OMA\obj
'käännetään pati samaan suuntaan
CloneObjectOrientation luoti\obj,OMA\obj
reload=50 'aseen lataus
PlaySound laukaus
EndIf
'päivitä aseen lataaminen
If reload>0 Then reload=reload-1
'ammukset
For luoti.AMMUS = Each AMMUS
MoveObject luoti\obj,6
'ammus & vihun vaunu törmää...
If ObjectsOverlap (VIHU\obj,luoti\obj,2) Then
DeleteObject luoti\obj 'poista objekti
Delete luoti 'poista luoti kokonaan
VIHU\kesto=VIHU\kesto-20
'jos vihu tuhoutuu...
If VIHU\kesto=<0 Then
DeleteObject VIHU\obj
PlaySound räjähdys
EndIf
'ammus ylittää rajan & tuhoutuu
ElseIf ObjectX(luoti\obj)<-240 Or ObjectX(luoti\obj)>240 Or ObjectY(luoti\obj)<-240 Or ObjectY(luoti\obj)>240 Then
DeleteObject luoti\obj 'poista objekti
Delete luoti 'poista luoti kokonaan
EndIf
Next luoti
'sälää...
DrawScreen
Forever
Re: Tyhmät kysymykset
Posted: Thu Dec 13, 2007 8:46 pm
by TheFish
vieras wrote:Väsään tässä tankkiammuskelua, ja kohtasin MAV-ongelman: kun tuhoan "vihun" tankin, toimii homma muuten (eli tankki poistetaan), mutta kun ammun vihutankin tuhoamisen jälkeen laukauksen, tulee MAV (peli siis pyörii muuten, pystyn liikuttamaan tankkia jne, mutta heti ammuttaessa pukkaa MAV)... Tässä koodipätkät joissa virheiden luulisi olevan:
Code: Select all
'Screenit ja FrameLimitit...
'tyyppien määritys
Type AMMUS
Field obj
End Type
Type TANKKI
Field obj
Field kesto As Float
Field polttoaine As Float
Field vauhti As Float
End Type
'objektien lataus (näiden lisäksi kartta ja muutama ääni)
vaunu1 = LoadObject ("vaunu1.bmp",72)
ShowObject vaunu1, OFF
vaunu2 = LoadObject ("vaunu2.bmp",72)
ShowObject vaunu2, OFF
pati = LoadObject ("ammus.bmp")
ShowObject pati, OFF
'OMA VAUNU
OMA.TANKKI = New(TANKKI)
OMA\obj = CloneObject(vaunu1)
OMA\kesto = 100
OMA\polttoaine = 100
'VIHUN VAUNU
VIHU.TANKKI = New(TANKKI)
VIHU\obj = CloneObject(vaunu2)
VIHU\kesto = 100
VIHU\polttoaine = 100
'...objektien sijoittelu, törmäystunnistukset
Repeat
'sälää, kontrollit...
'ammuntasysteemi
If KeyHit(cbKeyRControl) And reload=0 Then
luoti.AMMUS = New(AMMUS) 'luo uusi ammus
luoti\obj=CloneObject(pati) 'tee klooni
'asetetaan pati samaan paikkaan
CloneObjectPosition luoti\obj,OMA\obj
'käännetään pati samaan suuntaan
CloneObjectOrientation luoti\obj,OMA\obj
reload=50 'aseen lataus
PlaySound laukaus
EndIf
'päivitä aseen lataaminen
If reload>0 Then reload=reload-1
'ammukset
For luoti.AMMUS = Each AMMUS
MoveObject luoti\obj,6
'ammus & vihun vaunu törmää...
If ObjectsOverlap (VIHU\obj,luoti\obj,2) Then
DeleteObject luoti\obj 'poista objekti
Delete luoti 'poista luoti kokonaan
VIHU\kesto=VIHU\kesto-20
'jos vihu tuhoutuu...
If VIHU\kesto=<0 Then
DeleteObject VIHU\obj
PlaySound räjähdys
EndIf
'ammus ylittää rajan & tuhoutuu
ElseIf ObjectX(luoti\obj)<-240 Or ObjectX(luoti\obj)>240 Or ObjectY(luoti\obj)<-240 Or ObjectY(luoti\obj)>240 Then
DeleteObject luoti\obj 'poista objekti
Delete luoti 'poista luoti kokonaan
EndIf
Next luoti
'sälää...
DrawScreen
Forever
Yrität tarkistaa luotien törmäyksen tankkiin joka on jo tuhottu. Ennen kuin tarkastat törmäyksen, katso että vihollis tankki on vielä olemassa.
Re: Tyhmät kysymykset
Posted: Thu Dec 13, 2007 10:35 pm
by vieras
Tarkoititko tähän tapaan:
Code: Select all
'...
Type TANKKI
Field obj
Field kesto As Float
Field polttoaine As Float
Field vauhti As Float
Field tila '<-------------------lisätty-------------------!!!
End Type
'...
'VIHUN VAUNU
VIHU.TANKKI = New(TANKKI)
VIHU\obj = CloneObject(vaunu2)
VIHU\kesto = 100
VIHU\polttoaine = 100
VIHU\tila = 1 '1 = elossa, 0 = kuollut '<-------------------lisätty-------------------!!!
'...
Repeat
'...
For luoti.AMMUS = Each AMMUS
MoveObject luoti\obj,6
'ammus & vihun vaunu törmää...
If VIHU\tila = 1 And ObjectsOverlap (VIHU\obj,luoti\obj,2) Then '<-------------------lisätty-------------------!!!
DeleteObject luoti\obj 'poista objekti
Delete luoti 'poista luoti kokonaan
VIHU\kesto=VIHU\kesto-20
'jos vihu tuhoutuu...
If VIHU\kesto=<0 Then //SIIRRÄ POIS FOR-JUTUSTA
VIHU\tila = 0 '<-------------------lisätty-------------------!!!
DeleteObject VIHU\obj
Delete VIHU
PlaySound räjähdys
EndIf
EndIf
Next luoti
'...
Forever
Tuo nimittäin poistaa tuon edellämainitsemani ongelman, mutta muutaman vihun tuhoutumisen jälkeisen laakin ampuminen saa jälleen MAVin, enkä tälläkään kertaa keksi ongelman aikaansaajaa.
Kiitos joka tapauksessa vaivannäöstä!
Re: Tyhmät kysymykset
Posted: Fri Dec 14, 2007 2:29 pm
by beg
Tähän väliin kysyisin tääs tyhmän kysymyksen, eli miten saan tämän "polkupyörän" kallistumaan kun se osuu viistoon kuutioon kun nyt se ei erota vinoja kuutioita ja myös toinen, eli miten saan painovoiman alkamaan alusta. Aina kun "pyörä" tippuu esineelle se kyllä pysähtyy, mutta sitten kun mennään pois kuutiolta se tippuu hirveää vauhtia. Toivottavasti joku edes ymmärsi. Kiitos jo etukäteen jos joku jaksaa auttaa. Ja tuossa se koodi:
Code: Select all
SCREEN 150,150
FrameLimit 40
ShowMouse OFF
nappula1=LoadObject("media/aloitapeli.bmp")
nappula2=LoadObject("media/lopetapeli.bmp")
ClsColor cbwhite
hiiri=LoadObject("media/cursor.bmp")
PositionObject nappula1,0,25
PositionObject nappula2,0,0
Repeat
PositionObject hiiri,mousewx(),mousewy()
If ObjectsOverlap(hiiri,nappula1)And MouseHit(1) Then Goto peli
If ObjectsOverlap(hiiri,nappula2)And MouseHit(1) Then End
DrawScreen
Forever
peli:
Const PAINOVOIMA = -0.1
SCREEN 320,240,0,cbfullscreen
ClsColor cbwhite
FrameLimit 40
pyörä = LoadObject("Media\pyörät.bmp", 72)
palikka1 = LoadObject("media\vihreäpalikka.bmp", 72)
palikka2 = LoadObject("media\vihreäpalikka.bmp", 72)
palikka3 = LoadObject("media\vihreäpalikka.bmp", 72)
PositionObject pyörä,10,0
PositionObject palikka1,0,-100
PositionObject palikka2,75,-97
PositionObject palikka3,-75,-70
SetupCollision pyörä,palikka1,1,1,2
SetupCollision pyörä,palikka2,1,1,2
SetupCollision pyörä,palikka3,1,1,2
RotateObject palikka2,20
RotateObject palikka3,90
Repeat
vauhti=0
CloneCameraPosition pyörä
If UpKey() Then MoveObject pyörä,2
If DownKey() Then MoveObject pyörä,-2
TranslateObject pyörä,vauhti,yPlus#
yPlus=yPlus+PAINOVOIMA 'päivitä painovoima
UpdateGame 'päivitä törmäys
CloneCameraPosition pyörä 'liimaa kamera
maassa=0 'ilmassa jollei toisin käy ilmi
törmäykset=CountCollisions(pyörä)
'katsotaan tärmätäänkö kattoon tai lattiaan
For i=1 To törmäykset
If GetCollision(pyörä,i)=kenttä
'lattia
If CollisionAngle(pyörä,i)=90 Then
yPlus#=-1
maassa=1 'jalat on maassa
EndIf
'katto
If CollisionAngle(pyörä,i)=270 Then
yPlus#=-1
EndIf
EndIf
Next i
DrawScreen
Forever
Re: Tyhmät kysymykset
Posted: Fri Dec 14, 2007 2:32 pm
by TheFish
vieras wrote:Tarkoititko tähän tapaan:
Code: Select all
'...
Type TANKKI
Field obj
Field kesto As Float
Field polttoaine As Float
Field vauhti As Float
Field tila '<-------------------lisätty-------------------!!!
End Type
'...
'VIHUN VAUNU
VIHU.TANKKI = New(TANKKI)
VIHU\obj = CloneObject(vaunu2)
VIHU\kesto = 100
VIHU\polttoaine = 100
VIHU\tila = 1 '1 = elossa, 0 = kuollut '<-------------------lisätty-------------------!!!
'...
Repeat
'...
For luoti.AMMUS = Each AMMUS
MoveObject luoti\obj,6
'ammus & vihun vaunu törmää...
If VIHU\tila = 1 And ObjectsOverlap (VIHU\obj,luoti\obj,2) Then '<-------------------lisätty-------------------!!!
DeleteObject luoti\obj 'poista objekti
Delete luoti 'poista luoti kokonaan
VIHU\kesto=VIHU\kesto-20
'jos vihu tuhoutuu...
If VIHU\kesto=<0 Then //SIIRRÄ POIS FOR-JUTUSTA
VIHU\tila = 0 '<-------------------lisätty-------------------!!!
DeleteObject VIHU\obj
Delete VIHU
PlaySound räjähdys
EndIf
EndIf
Next luoti
'...
Forever
Tuo nimittäin poistaa tuon edellämainitsemani ongelman, mutta muutaman vihun tuhoutumisen jälkeisen laakin ampuminen saa jälleen MAVin, enkä tälläkään kertaa keksi ongelman aikaansaajaa.
Kiitos joka tapauksessa vaivannäöstä!
Väittäisin että ongelma on vieläkin sama. Poistat koko jäsenen typestä, joten se VIHU\tila ei tietenkään toimi. Sinun pitäisi käydä kaikki olemassa olevat vihut läpi (for-each loopilla) ja tarkastaa törmäys niihin, ja vältääkseen yleistä virhettä voin sanoa jo suoraan, että loopista pitää poistua kun vihu on tuhottu, ettei peli yritä tarkistaa poistetun luodin törmäystä vihuihin.
Re: Tyhmät kysymykset
Posted: Fri Dec 14, 2007 8:06 pm
by Quest
Osaisiko, joku selittää, miksi tämä MAVittaa kun pelaaja "overlappaa" tähden?
Code: Select all
FrameLimit 40
tahdet=0
points=0
valikko:
ClearKeys
Repeat
VerticalText 375,50, "Valikko"
Text 10,50, "1.Aloita"
Text 10,70, "2.Ohje"
Text 10,90, "3.Tekijät"
Text 10,110, "L.Lopeta"
If KeyHit (cbkey1) Then Goto peli
If KeyHit (cbkey2) Then Execute ("Help/Ohje.txt")
If KeyHit (cbkey3) Then Execute ("Help/Tekijät.txt")
If KeyHit (cbkeyl) Then MakeError "Kiitos kun kokeilit"
DrawScreen
Until EscapeKey()
peli:
'ladataan kartta
map=LoadMap("Media\tutorial.til","Media\tileset.bmp")
'ladataan tähti
star=LoadObject("Media\tahti.bmp")
ShowObject star,OFF
Const starsum=1
Dim tahti(starsum,1)
Gosub MakeStars
'ladataan maali
finish=LoadObject("Media\finish.bmp")
PositionObject finish, 230, -225
'ladataan pelaaja
guy=LoadObject("Media\guy.bmp",72)
PositionObject guy,-300, 200
'törmäys pelaajan ja kartan välillä
SetupCollision guy,map,1,4,2
MakeStars:
tahti(0,0)=CloneObject(star)
PositionObject tahti(0,0),190,-225
Return
Repeat
'Kontrollit
If LeftKey() Then TurnObject guy,5
If RightKey() Then TurnObject guy, -5
If UpKey() Then MoveObject guy,3
If DownKey() Then MoveObject guy, -3
If ObjectsOverlap(guy,finish,3) Then
points+100
ClearObjects
Goto valikko
End If
If ObjectsOverlap(guy,tahti(0,0),3) Then
tahdet+1
points+50
DeleteObject tahti(0,0)
End If
'Kamera
UpdateGame
CloneCameraPosition guy
DrawGame
Text 0,0,"Tähdet" +tahdet+ "/1"
Text 0,20,"Pisteet"+points
DrawScreen
Until EscapeKey()
Re: Tyhmät kysymykset
Posted: Fri Dec 14, 2007 8:20 pm
by Henkru
Quest wrote:Osaisiko, joku selittää, miksi tämä MAVittaa kun pelaaja "overlappaa" tähden?
Yrität tarkistaa törmääkö ukko ja tähti vaikka tähti on poistettu jo. Muuta tähden poiminta koodi tälläiseksi.
Code: Select all
If poimittu = 0 Then
If ObjectsOverlap(guy,tahti(0,0),3) Then
tahdet+1
points+50
DeleteObject tahti(0,0)
poimittu = 1
EndIf
EndIf
Eli kun tähti poimitaan muutetaan poimittu-muutjan arvoksi 1.
Re: Tyhmät kysymykset
Posted: Fri Dec 14, 2007 9:10 pm
by Quest
Henkru wrote:Quest wrote:Osaisiko, joku selittää, miksi tämä MAVittaa kun pelaaja "overlappaa" tähden?
Yrität tarkistaa törmääkö ukko ja tähti vaikka tähti on poistettu jo. Muuta tähden poiminta koodi tälläiseksi.
Code: Select all
If poimittu = 0 Then
If ObjectsOverlap(guy,tahti(0,0),3) Then
tahdet+1
points+50
DeleteObject tahti(0,0)
poimittu = 1
EndIf
EndIf
Eli kun tähti poimitaan muutetaan poimittu-muutjan arvoksi 1.
Joo, kiitos paljon!
Nyt toimii.
Re: Tyhmät kysymykset
Posted: Sun Dec 16, 2007 8:25 am
by Connect
Miten pystyn tekeen hyvän tilesetin?
Tai miten saan ladattua tilesetin tilesteriin?