Ja vielä yks ongelma... on nyt ollu niin miljoona ongelmaa noitten vihujen luomisen kanssa (typeillä), että voisko joku kiltti ihminen postata toimivan typemallin vihuista niin että näkisin mikä on mun koodissa mennyt vikaan. muuten oon saanut jo kaikki melkein ookoo toimimaan, muuta elkkujen vähennys ei toimi... pitääkö muuttuja esimerkiksi lisätä Fieldinä typeen?
Type ykkösvihu
Field obj
Field EV1 As Integer
End Type
C=Rand(-150,150)
D=Rand(-150,150)
If ST=0 Then
PV.ykkösvihu = New(ykkösvihu)
PV\obj = CloneObject(vihu1)
PositionObject PV\obj,C,D
PV\EV1=10
ST=2000
EndIf
If ST>0 Then ST=ST-1
For PV.ykkösvihu = Each ykkösvihu
PointObject PV\obj,player
MoveObject PV\obj,1,0
If ObjectsOverlap(laser\obj,PV\obj,3) Then
PV\EV1=PV\EV1-1
If PV\EV1=0 Then
DeleteObject(PV\obj)
Delete PV
EndIf
EndIf
Next PV
ja kiitokset niille jotka jo aikasemmin tätä vyyhtiä selvensi...
...
If ST>0 Then ST=ST-1
For PV.ykkösvihu = Each ykkösvihu
PointObject PV\obj,player
MoveObject PV\obj,1,0
If ObjectsOverlap(laser\obj,PV\obj,3) Then
PV\EV1=PV\EV1-1
If PV\EV1=0 Then
DeleteObject(PV\obj)
Delete PV
EndIf
EndIf
Next PV
...
Jos ymmärsin oikein, EV1 on elämät. Lisää "For PV.ykkösvihu" silmukkaan laser typen läpikäynti.
//We limit FPS in here
FrameLimit 40
//Set screen widht and height and bss and window's type
SCREEN 800,600,0,1
//Set color into red
Color 255,0,0
//X-coordinate,Y-coordinate,and Widht,Height
x=0
y=0
Const WH=20
Const SPEED = 20
Repeat
//Checks if you press Up,Down,Left or Right
If LeftKey() Then x = x - SPEED
If RightKey() Then x = x + SPEED
If UpKey() Then y = y - SPEED
If DownKey() Then y = y + SPEED
//Go to sub-program where we check collission
Gosub checkCollission
//Draw box
Box x,y,WH,WH
//U know what this make ;D
DrawScreen
Forever
//Actual collission-checking
checkCollission:
If(x < 0) Then x = 0
If(x+WH > 400) Then x = 800-WH
If(y<0) Then y = 0
If(y+WH > 300) Then y = 600-WH
//Now we leave this Logic-part and we go back to
//main program
Return
Ja tää on mun oma kirjoittama ohjelma, että en oo kopioinut mistään
En tiedä, mitä tiedän, mutta tiedän ettei se ole mitään kaunista.
I know not what I know, but I do know that it's not beautiful.
If(x < 0) Then x = 0
If(x+WH > 400) Then x = 800-WH 'WHhan on 20, joten jos x sattuu jossain vaiheessa olemaan yli 380, sen jälkeen se on koko loppu pelin ajan 780 koska myös 780 on enemmän kuin 380
If(y<0) Then y = 0
If(y+WH > 300) Then y = 600-WH 'ja sama tässä
Olen koulussa, joten nyt en pääse testaamaan ja 100% varmuudella en voi sanoa, mutta väittäisin melkeinpä, että tuossa on vika.
If(x < 0) Then x = 0
If(x+WH > 400) Then x = 800-WH 'WHhan on 20, joten jos x sattuu jossain vaiheessa olemaan yli 380, sen jälkeen se on koko loppu pelin ajan 780 koska myös 780 on enemmän kuin 380
If(y<0) Then y = 0
If(y+WH > 300) Then y = 600-WH 'ja sama tässä
Olen koulussa, joten nyt en pääse testaamaan ja 100% varmuudella en voi sanoa, mutta väittäisin melkeinpä, että tuossa on vika.
Jos tuo toimii niin sitten mä tajuun, kun en muokannut kaikkee
En tiedä, mitä tiedän, mutta tiedän ettei se ole mitään kaunista.
I know not what I know, but I do know that it's not beautiful.
//We limit FPS in here
FrameLimit 40
//Set screen widht and height and bss and window's type
SCREEN 800,600,0,0
//Set color into red
Color 255,0,0
//X-coordinate,Y-coordinate,and Widht,Height
x=0
y=0
Const WH=20
Const SPEED = 20
Repeat
//Checks if you press Up,Down,Left or Right
If LeftKey() Then x = x - SPEED
If RightKey() Then x = x + SPEED
If UpKey() Then y = y - SPEED
If DownKey() Then y = y + SPEED
//Go to sub-program where we check collission
Gosub checkCollission
//Draw box
Box x,y,WH,WH
//U know what this make ;D
DrawScreen
Forever
//Actual collission-checking
checkCollission:
If(x < 0) Then x = 0
If(x+WH > 800) Then x = 800-WH
If(y<0) Then y = 0
If(y+WH > 600) Then y = 600-WH
//Now we leave this Logic-part and we go back to
//main program
Return
<Ize> Pitäs tehä allekirjotus..
<Ize> Vois keksiä jonkin nasahtavan sanonnan..
<Ize> Siitä tulis upea legenda ja kaikki vaihtaisivat allekirjoituksensa siihen.
<Ize> Ehkä ei kuitenkaa...
//We limit FPS in here
FrameLimit 40
//Set screen widht and height and bss and window's type
SCREEN 800,600,0,0
//Set color into red
Color 255,0,0
//X-coordinate,Y-coordinate,and Widht,Height
x=0
y=0
Const WH=20
Const SPEED = 20
Repeat
//Checks if you press Up,Down,Left or Right
If LeftKey() Then x = x - SPEED
If RightKey() Then x = x + SPEED
If UpKey() Then y = y - SPEED
If DownKey() Then y = y + SPEED
//Go to sub-program where we check collission
Gosub checkCollission
//Draw box
Box x,y,WH,WH
//U know what this make ;D
DrawScreen
Forever
//Actual collission-checking
checkCollission:
If(x < 0) Then x = 0
If(x+WH > 800) Then x = 800-WH
If(y<0) Then y = 0
If(y+WH > 600) Then y = 600-WH
//Now we leave this Logic-part and we go back to
//main program
Return
Sorry,Chaosworm ehti ekaksi XD
En tiedä, mitä tiedän, mutta tiedän ettei se ole mitään kaunista.
I know not what I know, but I do know that it's not beautiful.
CoolMan wrote:Kuinka saisin tehtyä silleen että kun auto osuu esim. laatikkoo niin kuuluu ääni, laatikko häviää ja siirtyy eri paikkaan kentässä?
Kiitos!
Koodaamalla. Hyväksi voi käyttää esimerkiksi komentoa PositionObject ja funktioita PlaySound ja ObjectsOverlap.
Ongelmani on objektin poisto, kun siihen osuu toinen objekti. Esimerkki: Kun ukkeli ampuu toiseen ukkeliin luodin, pitäisi osuman saaneen ukkelin hävitä. Eli, voisiko joku tehdä mahdollisimman yksinkertaisen esimerkin kyseisestä asiasta, kun en millään ole keksinyt ratkaisua tähän asiaan. Kiitos.
matsir wrote:Ongelmani on objektin poisto, kun siihen osuu toinen objekti. Esimerkki: Kun ukkeli ampuu toiseen ukkeliin luodin, pitäisi osuman saaneen ukkelin hävitä. Eli, voisiko joku tehdä mahdollisimman yksinkertaisen esimerkin kyseisestä asiasta, kun en millään ole keksinyt ratkaisua tähän asiaan. Kiitos.
Katso manuaalista "DeleteObject" ja "ObjectsOverlap".
matsir wrote:Ongelmani on objektin poisto, kun siihen osuu toinen objekti. Esimerkki: Kun ukkeli ampuu toiseen ukkeliin luodin, pitäisi osuman saaneen ukkelin hävitä. Eli, voisiko joku tehdä mahdollisimman yksinkertaisen esimerkin kyseisestä asiasta, kun en millään ole keksinyt ratkaisua tähän asiaan. Kiitos.
Tarkista ObjectsOverLapin avulla ovatko luoti ja ukkeli päällekäin. DeleteObjectilla saat poistettua luodin ja ukkelin. Luodit varmaankin ovat toteutettu Typejen avulla? Silloin muista poistaa ensiksi luodin objecti ja sen jälkeen Tyypin jäsen. Muista sitten, että kun olet poistanut ukkelin DeleteObjectilla et voi käyttää sitä enää missään. Muista tehdä jokin tarkistus, että ukkeli on olemassa ennen kuin esim. liikutat sitä. Muuten seurauksena on MAV.
SCREEN 800, 600
aika = Timer()
Repeat
Text 0, 0, "Tämä teksti näkyy minuutin ajan ja sitten ohjelma sulkeutuu. Aikaa kulunut: "+Int(Timer()-aika)+" millisekuntia."
DrawScreen
Until Timer()-aika > 60000
Vaihtoehtoinen toteutustapa, joka on FPS-riippuvaisissa peleissä luultavasti parempi (tosin yleensä pelit kannattaisi periaatteessa tehdä FPS-riippumattomiksi):
SCREEN 800, 600
FrameLimit 60
Repeat
aika+1
Text 0, 0, "Tämä teksti näkyy minuutin ajan ja sitten ohjelma sulkeutuu. Frameja kulunut: "+aika
DrawScreen
Until aika > 3600