Objektit

Voit pyytää apua ohjelmointiongelmiin täältä.
Post Reply
Jormalaz
Member
Posts: 77
Joined: Sun Jun 15, 2008 9:22 pm

Objektit

Post by Jormalaz »

Eli siis miten saisin tehtyä sillä lailla, että jos objekti törmää toiseen, niin tulee addtext tai joku muu?

Esim.
if (se objektitörmäys) then
addtext "törmäsit"
endif

Toimisiko?
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm
Contact:

Re: Objektit

Post by Koodiapina »

Ampuminen perustuu oikeastaan vain siihen, että luot luodin ja sitten tiedät onko se olemassa ja missä se on. Tämän tiedon avulla voit muunmuassa näyttää sen pelaajalle ja tehdä sillä kaikenlaista. Tämä tapahtuu muuttujilla, mutta koska luoteja voi olla miten paljon vain, tyyppikokoelmat ovat järkevin ratkaisu. Yleensä tähän käytetään vielä objekteja, koska niitä on helppo hallita pienellä koodimäärällä. Toivottavasti selkeytti asiaa, tuohon manuaalin bugaamiseen en osaa sanoa mitään :D
Olen liian älykäs ollakseni väärässä. Jos olet kanssani eri mieltä, suosittelen sinua pohtimaan omaa elämänkatsomustasi ja sen perusteita.
Jormalaz
Member
Posts: 77
Joined: Sun Jun 15, 2008 9:22 pm

Re: Objektit

Post by Jormalaz »

Grandi wrote:Ampuminen perustuu oikeastaan vain siihen, että luot luodin ja sitten tiedät onko se olemassa ja missä se on. Tämän tiedon avulla voit muunmuassa näyttää sen pelaajalle ja tehdä sillä kaikenlaista. Tämä tapahtuu muuttujilla, mutta koska luoteja voi olla miten paljon vain, tyyppikokoelmat ovat järkevin ratkaisu. Yleensä tähän käytetään vielä objekteja, koska niitä on helppo hallita pienellä koodimäärällä. Toivottavasti selkeytti asiaa, tuohon manuaalin bugaamiseen en osaa sanoa mitään :D
Editoin otsikkoa ja en enään tarvitse apua ampumiseen.
Harakka
Advanced Member
Posts: 430
Joined: Mon Aug 27, 2007 9:08 pm
Location: Salo
Contact:

Re: Objektit

Post by Harakka »

Objektien törmäysten tarkastaminen on aika helppoa.

Code: Select all

ukko = LoadObject("media/guy.bmp")
lehma = LoadObject("media/cow.bmp")

Repeat
  If ObjectsOverlap(ukko,lehma) then
    If viimeksitormattiin = 0 then 'jos viime framessa EI ole törmätty
      AddText "Törmätään!"
      viimeksitormattiin = 1 'merkitään, että on törmätty
    EndIf
  Else
    viimeksitormattiin = 0 'jos ei törmätä, merkitään että viime framessa ei törmätty
  EndIf

  DrawScreen
Forever
Ylempi koodi lisää tekstin vain kerran kun törmätään, ja uudestaan kun objektit ovat eronneet toisistaan ja törmäävät uudestaan. Toinen tapa olisi muuten käyttää CountCollisions()-funktiota ja GetCollision():ia, mutta se on monimutkaisempi. Tämä tarkastaa, ovatko objektit päällekkäin.
Peli piirtokomennoilla - voittaja, Virtuaalilemmikkipeli - voittaja,
Sukellusvenepeli - voittaja, Paras tileset - voittaja
Vaihtuva päähenkilö - voittaja, Autopeli - voittaja sekä
Hiirellä ohjattava peli - voittaja B)
Jormalaz
Member
Posts: 77
Joined: Sun Jun 15, 2008 9:22 pm

Re: Objektit

Post by Jormalaz »

Nyt ajattelen että miten saisi jos ammus osuisi objektiin ja sitten objekti tuhoituisi. Miten onnistuisi?

Ja voisitko kertoa "helpommin" tuon koodin. Eli ei mtn esimerkkejä, vain se koodi.
Eräs cb koodaaja
Active Member
Posts: 126
Joined: Wed Aug 29, 2007 3:55 pm

Re: Objektit

Post by Eräs cb koodaaja »

Siis tarkoitatko tuhoutumisella sitä, että veret lentää vai sitä että objekti vain häviää. Ensimmäisen(veret lentää) saat toteutettua animaatiolla jonka CloneObjectPositionilla laitat ukon kanssa samaan kohtaan. Jälkimmäisen(häviää) saat vain DeleteObjectilla.

Ja koodeja en ala vääntämään, koska muuten kopioit ne, etkä opi mitään.
Tiimit ja tuotokset:
RE:Ydintuho
Drahtlose:Infernalisch, Pienet pelit
Jormalaz
Member
Posts: 77
Joined: Sun Jun 15, 2008 9:22 pm

Re: Objektit

Post by Jormalaz »

If CountCollisions(botti) Then
DeleteObject botti
EndIf

Jos teen tuon, niin tulee MAV (Memory access violation).
Eräs cb koodaaja
Active Member
Posts: 126
Joined: Wed Aug 29, 2007 3:55 pm

Re: Objektit

Post by Eräs cb koodaaja »

No kai se vääntää mavia, kun tuhoat objectin ja sen jälkeen yrität sen jälkeen vielä tarkistaa, törmääkö se.
EDIT:

Ja kaikki muutkin objektiin vaikuttavat komennot aiheuttavat mavin

Tiimit ja tuotokset:
RE:Ydintuho
Drahtlose:Infernalisch, Pienet pelit
Jormalaz
Member
Posts: 77
Joined: Sun Jun 15, 2008 9:22 pm

Re: Objektit

Post by Jormalaz »

Onko CB:ssä koodia, jolla voisi tuhota funktion?

Esim:
If CountCollisions(botti) Then
DeleteObject botti
destoryfunction (funktio)
EndIf
vms100
Member
Posts: 81
Joined: Tue Aug 28, 2007 4:47 pm

Re: Objektit

Post by vms100 »

mihin sellasta tarvitaan? :)

50 viesti \o/
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm
Contact:

Re: Objektit

Post by Koodiapina »

Jormalaz wrote:Onko CB:ssä koodia, jolla voisi tuhota funktion?

Esim:
If CountCollisions(botti) Then
DeleteObject botti
destoryfunction (funktio)
EndIf
E ole, eikä tule. Saahan se funktio möllöttää kaikessa rauhassa vaikka et sitä tarvisikaan.

EDIT: Maailman kehittynein ja modernein kieli - Grandi++ - tukee tätä toiminta B)
Olen liian älykäs ollakseni väärässä. Jos olet kanssani eri mieltä, suosittelen sinua pohtimaan omaa elämänkatsomustasi ja sen perusteita.
Jormalaz
Member
Posts: 77
Joined: Sun Jun 15, 2008 9:22 pm

Re: Objektit

Post by Jormalaz »

Mutta miten helvetissä saan sitten sen CountCollisions funktion pois?

If CountCollisions(botti) Then
DeleteObject botti
EndIf

Tuolla tavalla tulee se MAV...
tuhoojabotti
Advanced Member
Posts: 485
Joined: Tue Aug 28, 2007 3:53 pm
Location: Suomi, Finland
Contact:

Re: Objektit

Post by tuhoojabotti »

käytä muuttujaa joka kertoo onko botti elossa vaikka bottikuollu=False sitten

Code: Select all

if bottikuollu=false then 
if törmää then
delete botti
bottikuollu=true
endif
endif 
Imagedev.tuhoojabotti.com — “Programmer (noun): An organism that turns caffeine into code.”
Jormalaz
Member
Posts: 77
Joined: Sun Jun 15, 2008 9:22 pm

Re: Objektit

Post by Jormalaz »

tuhoojabotti wrote:käytä muuttujaa joka kertoo onko botti elossa vaikka bottikuollu=False sitten

Code: Select all

if bottikuollu=false then 
if törmää then
delete botti
bottikuollu=true
endif
endif 
Hmm... En oikein tajunnut tuota, mutta koitetaan.
JATothrim
Tech Developer
Tech Developer
Posts: 606
Joined: Tue Aug 28, 2007 6:46 pm
Location: Kuopio

Re: Objektit

Post by JATothrim »

:evil: Lisäät tarkistuksen, että onko objekti Olemassa !!

Code: Select all

if bottiolemassa = true
If CountCollisions(botti) Then
bottiolemassa = false
DeleteObject botti
EndIf
endif
oho, tuhoojabotti kerkesi ensin :mrgreen:
-On selkeästi impulsiivinen koodaaja joka...
ohjelmoi C++:lla rekursiivisesti instantioidun templaten, jonka jokainen instantiaatio instantioi sekundäärisen singleton-template-luokan, jonka jokainen instanssi käynistää säikeen tulostakseen 'jea'.
Jormalaz
Member
Posts: 77
Joined: Sun Jun 15, 2008 9:22 pm

Re: Objektit

Post by Jormalaz »

Voisitteko selittää, miten tuo cloneobject toimii. Haluaisin tehdä sen kanssa botista "kopion". Mitenköhän onnistuu?
Harakka
Advanced Member
Posts: 430
Joined: Mon Aug 27, 2007 9:08 pm
Location: Salo
Contact:

Re: Objektit

Post by Harakka »

Cloneobject() luo uuden objektin, jolla on sama kuva ja pyöritysarvo kuin sulkujen sisällä olevalla objektilla. Eli:

Code: Select all

kopioitava = LoadObject("media/guy.bmp")
uusi = CloneObject(kopioitava)
Tämän jälkeen molempia voi käyttää erikseen (liikuttamiset ja muut vastaavat).
Peli piirtokomennoilla - voittaja, Virtuaalilemmikkipeli - voittaja,
Sukellusvenepeli - voittaja, Paras tileset - voittaja
Vaihtuva päähenkilö - voittaja, Autopeli - voittaja sekä
Hiirellä ohjattava peli - voittaja B)
Post Reply