Turha Mav ?

Voit pyytää apua ohjelmointiongelmiin täältä.
Post Reply
RaatoX
Member
Posts: 54
Joined: Thu Aug 12, 2010 7:04 pm

Turha Mav ?

Post by RaatoX »

Ohjelma Mavittaa, vaikka mielestäni kaava on oikea ??? :(
Mistä voi olla kyse ?

Code: Select all

For otko.TULIKIVIO = Each TULIKIVIO
   
        If luoti <> otko Then
            If ObjectsOverlap(luoti\objb, otko\objtko) Then
      
            DeleteObject otko\objtko 'poista objekti
            Delete otko 'poista tulikivi kokonaan

            ShowObject luoti\objb,OFF
            Delete luoti 'poista luoti kokonaan  

            EndIf

        EndIf
    Next otko     
User avatar
Jonez
Devoted Member
Posts: 575
Joined: Mon Aug 27, 2007 8:37 pm

Re: Turha Mav ?

Post by Jonez »

Tuhoa luoti\objb sen sijaan että piilottaisit sen rivillä 9. Tämä ei ole koko ongelmasi: jos luoti on vaikka ensimmäisen otkon (mikä se on?) päällä, luoti tuhotaan, mutta silti päällekkäisyys tarkastetaan seuraavien otkojen kohdalla. Siis päällekkäisyys luodille jota ei enää ole olemassa.

Sinun on muuten turha tarkastaa onko otko <> luoti, koska nämä eivät kuulu samaan tyyppikokoelmaan (ehkä?), eivätkä siis voi olla sama asia (ellet ole säätänyt, mitä en usko).

Eli tee näin välttääksesi mavin. Tärkeää koodissa siis on komento Exit, jolla poistutaan sisemmästä silmukasta. Muista käyttää Exitiä vain jos tuhoamista tapahtuu.

Code: Select all

For otko.OTKOT = Each OTKOT
    For luoti.LUODIT = Each LUODIT
        If Päällekkäin( luoti\obj, otko\obj ) Then
            TuhoaLuotiJaOtko()
            Exit
        EndIf
    Next luoti
Next otko
Edit. siinä tapauksessa, että et käytä kahta silmukkaa, voi ongelmasi johtua esim. siitä, että luoti\obj-muuttujaan ei ikinä kloonata luotia. Tai ehkä se kloonataan, mutta tarkastus tehdään monta kertaa jopa sen jälkeen kun luoti on tuhottu. Kannattaa muutenkin lähettää se koko koodi, niin ei meidän tarvitse käydä läpi kaikkia maailman vaihtoehtoja errorille.
-Vuoden 2008 aloittelijan ystävä -palkinnon voittaja-
Image <- protestipelikilpailun voittaja.
Space War
RaatoX
Member
Posts: 54
Joined: Thu Aug 12, 2010 7:04 pm

Re: Turha Mav ?

Post by RaatoX »

Kiitos, kyllä se on tuo virhe, koska päädyin samaan ennen kuin tulin katsomaan vastausta.
Tajusin, että tuhoan luodin ja tarkistan uudelleen vaikka sitä ei enää ole.
Uskon, että kyseisellä muutoksella pääsen eroon virheestä.
Ja kyllä käytän ohjelmassa useita silmukoita yhtä aikaa, koska ruutu tulee täyteen tapahtumia.
Liikkuvia, pyöriviä etc. objekteja pyöritellään n. 2000 kpl kerrallaan, joten tarkistamista riittää ja virheisiin ei olisi pahemmin varaa ;) .
Exit vain oli kateissa :D .
Kiitos jälleen kerran.
Post Reply