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 » Thu Jun 19, 2008 8:28 pm

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?

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

Re: Objektit

Post by Koodiapina » Thu Jun 19, 2008 8:55 pm

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 » Thu Jun 19, 2008 8:59 pm

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.

User avatar
Harakka
Advanced Member
Posts: 430
Joined: Mon Aug 27, 2007 9:08 pm
Location: Salo
Contact:

Re: Objektit

Post by Harakka » Thu Jun 19, 2008 9:12 pm

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 » Thu Jun 19, 2008 9:27 pm

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.

User avatar
Eräs cb koodaaja
Active Member
Posts: 126
Joined: Wed Aug 29, 2007 3:55 pm

Re: Objektit

Post by Eräs cb koodaaja » Fri Jun 20, 2008 12:18 am

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 » Fri Jun 20, 2008 12:31 am

If CountCollisions(botti) Then
DeleteObject botti
EndIf

Jos teen tuon, niin tulee MAV (Memory access violation).

User avatar
Eräs cb koodaaja
Active Member
Posts: 126
Joined: Wed Aug 29, 2007 3:55 pm

Re: Objektit

Post by Eräs cb koodaaja » Fri Jun 20, 2008 11:48 am

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 » Sun Jun 22, 2008 8:23 pm

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

Esim:
If CountCollisions(botti) Then
DeleteObject botti
destoryfunction (funktio)
EndIf

User avatar
vms100
Member
Posts: 81
Joined: Tue Aug 28, 2007 4:47 pm

Re: Objektit

Post by vms100 » Sun Jun 22, 2008 8:26 pm

mihin sellasta tarvitaan? :)

50 viesti \o/

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

Re: Objektit

Post by Koodiapina » Sun Jun 22, 2008 8:35 pm

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 » Sun Jun 22, 2008 9:08 pm

Mutta miten helvetissä saan sitten sen CountCollisions funktion pois?

If CountCollisions(botti) Then
DeleteObject botti
EndIf

Tuolla tavalla tulee se MAV...

User avatar
tuhoojabotti
Advanced Member
Posts: 485
Joined: Tue Aug 28, 2007 3:53 pm
Location: Suomi, Finland
Contact:

Re: Objektit

Post by tuhoojabotti » Sun Jun 22, 2008 9:14 pm

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 » Sun Jun 22, 2008 9:17 pm

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.

User avatar
JATothrim
Tech Developer
Tech Developer
Posts: 606
Joined: Tue Aug 28, 2007 6:46 pm
Location: Kuopio

Re: Objektit

Post by JATothrim » Sun Jun 22, 2008 9:23 pm

: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 » Mon Jun 23, 2008 3:34 pm

Voisitteko selittää, miten tuo cloneobject toimii. Haluaisin tehdä sen kanssa botista "kopion". Mitenköhän onnistuu?

User avatar
Harakka
Advanced Member
Posts: 430
Joined: Mon Aug 27, 2007 9:08 pm
Location: Salo
Contact:

Re: Objektit

Post by Harakka » Mon Jun 23, 2008 3:51 pm

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