MAV Ammusta tuhottaessa

Voit pyytää apua ohjelmointiongelmiin täältä.
Post Reply
Sepi
Member
Posts: 84
Joined: Thu Jun 05, 2008 1:38 pm

MAV Ammusta tuhottaessa

Post by Sepi » Tue Apr 21, 2009 5:44 pm

Eli ongelma on siis se, että tyyppikokoelmasta objektin poistaminen tuottaa mavin.

Code: Select all


For panos2.panokset2=Each panokset2
MoveObject panos2\obj,panos2\nopeus/100


For oma.omat=Each omat
If ObjectsOverlap(panos2\obj,oma\obj,3) Then
oma\kesto=oma\kesto-panos2\vahinko
DeleteObject panos2\obj
Delete panos2

EndIf

Next oma

Next panos2

Mavia ei siis tule joka kerta, vaan satunnaisesti silloin tällöin. Sitä ei siis tule kun tuon objektin poistamisen jättää pois. Omasta mielestäni objektia ei enää yritetä käyttää sen poistamisen jälkeen joten missä vika?

User avatar
Substance
Active Member
Posts: 234
Joined: Fri Mar 14, 2008 6:48 pm

Re: MAV Ammusta tuhottaessa

Post by Substance » Tue Apr 21, 2009 6:16 pm

Sepi wrote:Eli ongelma on siis se, että tyyppikokoelmasta objektin poistaminen tuottaa mavin.

Mavia ei siis tule joka kerta, vaan satunnaisesti silloin tällöin. Sitä ei siis tule kun tuon objektin poistamisen jättää pois. Omasta mielestäni objektia ei enää yritetä käyttää sen poistamisen jälkeen joten missä vika?
Jos omia on enemmän kuin yksi ja panos2 poistetaan ennen viimeistä omaa, niin kyllä sen objektia yritetään käyttää poiston jälkeen.
Tässä korjattu:

Code: Select all


For panos2.panokset2=Each panokset2
MoveObject panos2\obj,panos2\nopeus/100


For oma.omat=Each omat
If ObjectsOverlap(panos2\obj,oma\obj,3) Then
oma\kesto=oma\kesto-panos2\vahinko
tuho = 1
EndIf

Next oma

If tuho = 1 then
    DeleteObject panos2\obj
    Delete panos2
    tuho=0
Endif
Next panos2

Substance aka LittleGreen
Red Encounter - shoot'em uppia - lataus

Sepi
Member
Posts: 84
Joined: Thu Jun 05, 2008 1:38 pm

Re: MAV Ammusta tuhottaessa

Post by Sepi » Tue Apr 21, 2009 7:40 pm

Aa, katsos vaan :) Kiitos paljon!

E: Höh, mavi ilmestyy silti samalla tavoin :( Mikäköhän tuossa voi olla pielessä. Oma älli ei ainakaan hoksaa.

Sepisepi

Re: MAV Ammusta tuhottaessa

Post by Sepisepi » Sat Apr 25, 2009 12:42 pm

Eikö kukaan osaa auttaa?

User avatar
MaGetzUb
Guru
Posts: 1715
Joined: Sun Sep 09, 2007 12:35 pm
Location: Alavus

Re: MAV Ammusta tuhottaessa

Post by MaGetzUb » Sat Apr 25, 2009 1:24 pm

Pitäisi nähdä koko koodi, että osaisi auttaa.. :)
Solar Eclipse
Meneillä olevat Projektit:
We're in a simulation, and God is trying to debug us.

Sepisepi

Re: MAV Ammusta tuhottaessa

Post by Sepisepi » Sat Apr 25, 2009 3:32 pm

No, pelissä on koodia tällä lähemmäs kaksi tuhatta riviä niin se ei ihan onnistu, mutta edittaan tähän myöhemmin tuota taistelua/ampumisvaihetta koskevan koodin :)

Sepi
Member
Posts: 84
Joined: Thu Jun 05, 2008 1:38 pm

Re: MAV Ammusta tuhottaessa

Post by Sepi » Sat Apr 25, 2009 8:30 pm

Tuossa tuo:

Code: Select all

For oma.omat=Each omat
For oma2.omat2=Each omat2

If Distance2(oma\obj,oma2\obj)<oma\nytetaisyys And oma2\kesto>0 Then
 If oma2\kesto>0 Then
 oma\nytetaisyys=Distance2(oma\obj,oma2\obj)
 oma\nytnumero=oma2\numero
 EndIf
EndIf



Next oma2


If ObjectsOverlap(hiiriobj,oma\obj) Then Text 0,300,"ETÄISYYS: "+oma\nytetaisyys then text 0,310,"NUMERO: "+oma\nytnumero





Next oma

For oma2.omat2=Each omat2
For oma.omat=Each omat

If Distance2(oma2\obj,oma\obj)<oma2\nytetaisyys And oma\kesto>0 Then
If oma\kesto>0 Then
 oma2\nytetaisyys=Distance2(oma2\obj,oma\obj)
 oma2\nytnumero=oma\numero
 EndIf
 EndIf




Next oma


If ObjectsOverlap(hiiriobj,oma2\obj) Then Text 0,300,"ETÄISYYS: "+oma2\nytetaisyys then text 0,310,"NUMERO: "+oma2\nytnumero





Next oma2


ajastin+2
If ajastin<100 Then
SetFont iso
CenterText 320,240,"3"
SetFont fontti
EndIf
If ajastin<200 And ajastin>99 Then
SetFont iso
CenterText 320,240,"2"
SetFont fontti
EndIf
If ajastin<300 And ajastin>199 Then
SetFont iso
CenterText 320,240,"1"
SetFont fontti
EndIf

If ajastin>299 Then taistellaan=1

If taistellaan=1 Then
For oma.omat=Each omat
For oma2.omat2=Each omat2

If oma2\numero=oma\nytnumero Then
PointObject oma\obj,oma2\obj
If Distance2(oma\obj,oma2\obj)>250 Then
MoveObject oma\obj,2+oma\nopeus/5
Else
If oma\lataus=0 Then
panos.panokset=New(panokset)
panos\obj=CloneObject(panos1)
CloneObjectOrientation panos\obj,oma\obj
CloneObjectPosition panos\obj,oma\obj
panos\nopeus=oma\aselnopeus
panos\vahinko=oma\asevahinko
oma\lataus=6000/oma\asenopeus
AddText "PAU"
EndIf
EndIf


EndIf

Next oma2

If oma\lataus>0 Then oma\lataus-1

Next oma

















For oma2.omat2=Each omat2
For oma.omat=Each omat

If oma\numero=oma2\nytnumero Then
PointObject oma2\obj,oma\obj
If Distance2(oma2\obj,oma\obj)>250 Then
MoveObject oma2\obj,2+oma2\nopeus/5
Else

If oma2\lataus=0 Then
panos2.panokset2=New(panokset2)
panos2\obj=CloneObject(panos1)

CloneObjectOrientation panos2\obj,oma2\obj
CloneObjectPosition panos2\obj,oma2\obj
panos2\nopeus=oma2\aselnopeus
panos2\vahinko=oma2\asevahinko
oma2\lataus=6000/oma2\asenopeus
AddText "PAU"
EndIf
EndIf


EndIf

Next oma

If oma2\lataus>0 Then oma2\lataus-1

Next oma2











For panos.panokset=Each panokset
MoveObject panos\obj,panos\nopeus/100


For oma2.omat2=Each omat2
If ObjectsOverlap(panos\obj,oma2\obj,3) Then
oma2\kesto=oma2\kesto-panos\vahinko
tuho = 1
EndIf

Next oma2

If tuho = 1 then
    DeleteObject panos\obj
    Delete panos
    tuho=0
EndIf
Next panos



For panos2.panokset2=Each panokset2
MoveObject panos2\obj,panos2\nopeus/100


For oma.omat=Each omat
If ObjectsOverlap(panos2\obj,oma\obj,3) Then
oma\kesto=oma\kesto-panos2\vahinko
tuho = 1
EndIf

Next oma

If tuho = 1 then
    DeleteObject panos2\obj
    Delete panos2
    tuho=0
EndIf
Next panos2



EndIf


User avatar
phons
Guru
Posts: 1056
Joined: Wed May 14, 2008 10:11 am

Re: MAV Ammusta tuhottaessa

Post by phons » Sat Apr 25, 2009 9:59 pm

Heheh, ongelmana siellä ainakin on että kun ammus1 osuu ukkeli2 niin tuho on 1 ja MOLEMMAT AMMUKSET TUHOTAAN, syy: Molemmissa if lausekkesiaa(ammus1 -> ukkeli2 ja ammus2 -> ukkeli1) sanotaan lopussa tuho = 1, ja lopussa sanotaan että jos tuho=1 niin tuhotaan ammus1, tällainen on myös ammus2:kosen kohdalla, joten molemat tuhotaan. Tee siis muuttuja tuho2. Tai oikeastaan tuo on TPC:tä, eli The Purkka Codea. No niinhän melkein aina aloittelijoilla... Itse asiassa et tarvitse tuollaisia tuhoamis muuttujia vaan voit tuhota ammukset silloin kun sanot että: tuho=1. Sitten... no joo, sanon vain, että opettele jo nyt sisentämään. Koodi näyttää paljon siistemmältä ja silloin siä pysty lukemaan ja sitä ymmärtää helpommin... Minulla meni hetki löytää viimeisen EndIf:n alkupää...

Tulipas pitkää... Toivottavasti ymmärsit edes puolet.
Image

Sepisepi

Re: MAV Ammusta tuhottaessa

Post by Sepisepi » Sun Apr 26, 2009 5:18 pm

Tuolla tuho2:sen tekemisellä ei ollut mitään merkitystä, mikä oli ihan odotettavissa koska tuo tuhon tarkistus käydään eri loopeissa ja nollataan kummankin jälkeen. Lisäksi mitäpä jos lukisit noita aiempiakin viestejä niin tuo tuhon tekeminen tuolla tuho-muuttujalla nimenomaan ehdotettiin minulle tehtäväksi. Syynkin näet ylempää.

Post Reply