Tyhmät kysymykset (I/2010)

Voit pyytää apua ohjelmointiongelmiin täältä.
Locked
jaahas
Advanced Member
Posts: 307
Joined: Fri Feb 05, 2010 11:36 pm
Location: Tornio

Re: Tyhmät kysymykset (I/2010)

Post by jaahas »

joo siis mul oli tos vain yks pulma miten saan objectin hiireks muuten osasin enkä löytäny manuaalista apua tähän
User avatar
Knoy
Active Member
Posts: 187
Joined: Fri Feb 12, 2010 10:50 pm

Re: Tyhmät kysymykset (I/2010)

Post by Knoy »

Objectia ei tartte laittaa suoraan hiireksi toimiva tapa olisi ainakin.

Elikkäs avain sanoina tuossa olisi Showmouse (Kuvana) tai MouseWX() ja MouseWY() (Objectina)

Code: Select all

Positionobject Hiiri, MouseWX(),MouseWY()
Tuossa olisi jotain epämääräistä räpellystä objecti ja kuva hiiristä.

Code: Select all

Guy=LoadObject("Media\Guy.bmp")
Hiiri=LoadImage("Media\Guy.bmp")

Eka:
    Repeat
    Text 0,0,"Objecti hiirenä"
    Text 0,15, "paina nappia vaihtaaksesi Kuva hiireen"
    PositionObject Guy,MouseWX(),MouseWY()
    DrawScreen
    If GetKey() Then Gosub Toka
    Forever 

Toka:
ShowObject Guy,OFF 
ShowMouse Hiiri
Gosub Kolmas

Kolmas:
    Repeat
    Text 0,0,"Objecti hiirenä"
    Text 0,15, "paina nappia vaihtaaksesi Objecti hiireen"
    DrawScreen
    If GetKey() Then Gosub Neljäs 
    Forever

Neljäs:
ShowObject Guy,ON
ShowMouse ON
Gosub Eka
Edit: korjasin hieman koodia....
jaahas
Advanced Member
Posts: 307
Joined: Fri Feb 05, 2010 11:36 pm
Location: Tornio

Re: Tyhmät kysymykset (I/2010)

Post by jaahas »

no nyt on se probleema että ne paukut jää siihen hiireen kiinni XD
EDIT:

ei oikein ajatukset luista ko ei ite keksi varmaan ko väsyttää syynä

sankja
Newcomer
Posts: 30
Joined: Thu Jan 29, 2009 10:32 pm

Re: Tyhmät kysymykset (I/2010)

Post by sankja »

No,tossa yhteenvetona vähän Jaahaksen onkelmaan.Miten saada ammus menemään hiirtä kohti,jos tota hait. ;)

Code: Select all

Type AMMUS
Field obj
EndType

'HUOM! ShowMouse mouse ei toimi objektien yhteydessä
ShowMouse OFF
mouse = LoadObject("target.bmp")
ammus_obj=LoadObject("bullet.bmp")
'ShowObject ammus_obj,OFF
lataus=0
Repeat

    PositionObject mouse,MouseWX(),MouseWY()
    
    If MouseHit(1) And lataus=0
        A.AMMUS = New(AMMUS)
        A\obj = CloneObject(ammus_obj)
        PointObject A\obj,mouse
        lataus=5
    EndIf
    
    If lataus>0 Then lataus=lataus-1
    
    For A.AMMUS = Each AMMUS
    MoveObject A\obj,1
        If ObjectsOverlap(A\obj,mouse)
            DeleteObject A\obj:Delete A
        EndIf 
    Next A
    
    DrawScreen
    
Until EscapeKey()
jaahas
Advanced Member
Posts: 307
Joined: Fri Feb 05, 2010 11:36 pm
Location: Tornio

Re: Tyhmät kysymykset (I/2010)

Post by jaahas »

sankja wrote:No,tossa yhteenvetona vähän Jaahaksen onkelmaan.Miten saada ammus menemään hiirtä kohti,jos tota hait. ;)

Code: Select all

Type AMMUS
Field obj
EndType

'HUOM! ShowMouse mouse ei toimi objektien yhteydessä
ShowMouse OFF
mouse = LoadObject("target.bmp")
ammus_obj=LoadObject("bullet.bmp")
'ShowObject ammus_obj,OFF
lataus=0
Repeat

    PositionObject mouse,MouseWX(),MouseWY()
    
    If MouseHit(1) And lataus=0
        A.AMMUS = New(AMMUS)
        A\obj = CloneObject(ammus_obj)
        PointObject A\obj,mouse
        lataus=5
    EndIf
    
    If lataus>0 Then lataus=lataus-1
    
    For A.AMMUS = Each AMMUS
    MoveObject A\obj,1
        If ObjectsOverlap(A\obj,mouse)
            DeleteObject A\obj:Delete A
        EndIf 
    Next A
    
    DrawScreen
    
Until EscapeKey()
siis katos tonne ylemmäs siin on nykyhetkinen ongelma
User avatar
buke44
Active Member
Posts: 169
Joined: Sat May 23, 2009 8:10 pm
Location: Tampere

Re: Tyhmät kysymykset (I/2010)

Post by buke44 »

Jaahas: tee se ammuksen suuntaus vain kerran, eli silloin kun luot ammuksen
jaahas
Advanced Member
Posts: 307
Joined: Fri Feb 05, 2010 11:36 pm
Location: Tornio

Re: Tyhmät kysymykset (I/2010)

Post by jaahas »

buke44 wrote:Jaahas: tee se ammuksen suuntaus vain kerran, eli silloin kun luot ammuksen
jaa enpäs tullut ajatelleeks kiitos
EDIT:

elikkäs miten saan ohjelman luomaan uuden ukon aina 3 sekunnin välein?

sankja
Newcomer
Posts: 30
Joined: Thu Jan 29, 2009 10:32 pm

Re: Tyhmät kysymykset (I/2010)

Post by sankja »

Kokeile soveltaa tosta omaan ohjelmaasi,jos kiinnostaa. :ugeek:

Code: Select all


Type TYYPPI
Field obj
EndType
aika=Timer()

ukko=LoadObject("guy.bmp")
ShowObject ukko,OFF

Repeat

If Timer()>=aika+3000
    u.TYYPPI=New(TYYPPI)
    u\obj=CloneObject(ukko)
    PositionObject u\obj,Rand(-200,200),Rand(150,-150)
    aika=Timer()
EndIf

DrawScreen 
Until EscapeKey()
Wilsu
Newcomer
Posts: 13
Joined: Sun Mar 07, 2010 3:00 pm

Re: Tyhmät kysymykset (I/2010)

Post by Wilsu »

Kysymys tuost AnimObjectista.
Eikkä jos on esim.
"Matti=LoadAnimObject("Media\MattiAnim.bmp",47,52,0.25)
Niin, mitä nuo neljä punaista numerosarjaa on lopussa?
Viltzu
Guru
Posts: 1132
Joined: Sun Aug 26, 2007 5:45 pm
Location: Alavieska
Contact:

Re: Tyhmät kysymykset (I/2010)

Post by Viltzu »

Wilsu wrote:Kysymys tuost AnimObjectista.
Eikkä jos on esim.
"Matti=LoadAnimObject("Media\MattiAnim.bmp",47,52,0.25)
Niin, mitä nuo neljä punaista numerosarjaa on lopussa?
Manuaali on keksitty.
Tässä kohtaa manuaalia: http://www.coolbasic.com/cbmanual/comma ... bject.html
Eli ne ovat frame_leveys, frame_korkeus, aloitus. Hetkonen tuossahan on kolme eikä neljä. Sekä tuohan ei pitäisi toimia? Aloitus parametri pitänee olla kokonaisluku. Sekä sinulta puuttuu yksi parametri, "pituus"
jaahas
Advanced Member
Posts: 307
Joined: Fri Feb 05, 2010 11:36 pm
Location: Tornio

Re: Tyhmät kysymykset (I/2010)

Post by jaahas »

en nyt tajunnu ton objectintegerin opetusta siis jos teen näin (objectinteger vihu,100) se on siis hp miten saan sen miinustamaan siitä 20 jos siihen vihuun osuu pati?
User avatar
Sami The Great
Advanced Member
Posts: 485
Joined: Tue Aug 28, 2007 4:15 pm
Contact:

Re: Tyhmät kysymykset (I/2010)

Post by Sami The Great »

jaahas wrote:en nyt tajunnu ton objectintegerin opetusta siis jos teen näin (objectinteger vihu,100) se on siis hp miten saan sen miinustamaan siitä 20 jos siihen vihuun osuu pati?
Komennat ObjectInteger vihu, 80. Luet ensin nykyisen HP:n ja sitten vähennät siitä sen 20 ja sen jälkeen asetat uuden arvon.
http://www.rockodilegames.com
CoolBasickin käyttäjä vuodesta 2004.
Sly_Jack0
Devoted Member
Posts: 612
Joined: Mon Dec 10, 2007 8:25 am

Re: Tyhmät kysymykset (I/2010)

Post by Sly_Jack0 »

jaahas wrote:en nyt tajunnu ton objectintegerin opetusta siis jos teen näin (objectinteger vihu,100) se on siis hp miten saan sen miinustamaan siitä 20 jos siihen vihuun osuu pati?
Elikkäs, kun pati osuu vihuun, sinun pitää käyttää ObjectIntegeriä funktiona, jolloin se palauttaa vihu hp:n. Sen jälkeen vähennät siitä 20 ja asetat uuden arvon vihulle. Tähän tapaan:

Code: Select all

ObjectInteger vihu,100

If patiosuuvihuun Then
  ObjectInteger vihu,ObjectInteger(vihu) - 20
Endif
jaahas
Advanced Member
Posts: 307
Joined: Fri Feb 05, 2010 11:36 pm
Location: Tornio

Re: Tyhmät kysymykset (I/2010)

Post by jaahas »

kiitooos
EDIT:

taas minä siis nyt olis sellanen pulma et miten saaan sen vihun sitten tuhottua???????

Sly_Jack0
Devoted Member
Posts: 612
Joined: Mon Dec 10, 2007 8:25 am

Re: Tyhmät kysymykset (I/2010)

Post by Sly_Jack0 »

jaahas wrote:kiitooos
EDIT:

taas minä siis nyt olis sellanen pulma et miten saaan sen vihun sitten tuhottua???????

Tarkistat onko vihun ho 0 ja sitten katsot manuaalista komennon DeleteObject.
Hene
Active Member
Posts: 122
Joined: Wed Apr 22, 2009 8:13 pm

Re: Tyhmät kysymykset (I/2010)

Post by Hene »

Otin uudeksi harjoitusprojektiksi opetella noita vihollissysteemejä ja tarvitsisin hieman apua...

Miten voisi toteuttaa seuraavanlaisen systeemin:
Pelaaja ohjaa objektia A yrittäen napata tietokoneen ohjaamaa objektia B. Jos objektin A ja B välinen etäisyys on pienempi kuin 100 pikseliä, objekti B liikkuu objektia A pakoon (Suurin ongelma nurkat).
"Baby," I said. "I'm a genius but nobody knows it but me."
jaahas
Advanced Member
Posts: 307
Joined: Fri Feb 05, 2010 11:36 pm
Location: Tornio

Re: Tyhmät kysymykset (I/2010)

Post by jaahas »

Sly_Jack0 wrote:
jaahas wrote:kiitooos
EDIT:

taas minä siis nyt olis sellanen pulma et miten saaan sen vihun sitten tuhottua???????

Tarkistat onko vihun ho 0 ja sitten katsot manuaalista komennon DeleteObject.
mutko en osaa tarkistaa sitä laita esimerkki ja kyl mä noi deleteobjectit osaan
EDIT:

jaa osasin sittenkin ei tartte auttaa

Last edited by jaahas on Sat Mar 20, 2010 11:07 pm, edited 1 time in total.
DatsuniG
Advanced Member
Posts: 367
Joined: Fri Aug 15, 2008 9:57 pm

Re: Tyhmät kysymykset (I/2010)

Post by DatsuniG »

Hene wrote:Otin uudeksi harjoitusprojektiksi opetella noita vihollissysteemejä ja tarvitsisin hieman apua...

Miten voisi toteuttaa seuraavanlaisen systeemin:
Pelaaja ohjaa objektia A yrittäen napata tietokoneen ohjaamaa objektia B. Jos objektin A ja B välinen etäisyys on pienempi kuin 100 pikseliä, objekti B liikkuu objektia A pakoon (Suurin ongelma nurkat).
Tarkistat funktiolla Distance2 pelaajan ja botin välisen etäisyyden. Tässä on pieni esimerkki kuinka toteuttaa botin liikkuminen tilekartoilla:

Code: Select all

map = LoadMap("Media\cdm2.til","Media\tileset.bmp")
obj = LoadObject("Media/guy.bmp", 72)

dis = 32    // Kuinka lähellä seinän tulee olla ennenkuin botti reagoi         
Repeat
    MoveObject obj, 1
    // Tarkistetaan onko objectin edessä törmäyskerros
    If GetMap(2, ObjectX(obj) + Cos(ObjectAngle(obj)) * Dis, ObjectY(obj) + Sin(ObjectAngle(obj)) * Dis) Then 
        // Edessä oli, joten katsotaan kumpaan suuntaan käännytään
        If GetMap(1, ObjectX(obj) + Cos(ObjectAngle(obj) + 90) * Dis, ObjectY(obj) + Sin(ObjectAngle(obj) + 90) * Dis) = 0 Then
            // Vasemmalla tyhjää, käännytään sinne
            RotateObject obj, ObjectAngle(obj) + 90
        ElseIf GetMap(1, ObjectX(obj) + Cos(ObjectAngle(obj) - 90) * Dis, ObjectY(obj) + Sin(ObjectAngle(obj) - 90) * Dis) = 0 Then
            // Oikealla tyhjää, käännytään sinne
            RotateObject obj, ObjectAngle(obj) - 90
        Else 
            // Umpikuja, käännytään ympäri
            RotateObject obj, ObjectAngle(obj) + 180
        EndIf 
        // Kääntymisen voisi tehdä myös turnobjectilla, mutta silloin reagointietäisyyttä tulisi kasvattaa
    EndIf 
    DrawScreen
Forever 
Hengität nyt manuaalisesti.
Sly_Jack0
Devoted Member
Posts: 612
Joined: Mon Dec 10, 2007 8:25 am

Re: Tyhmät kysymykset (I/2010)

Post by Sly_Jack0 »

jaahas wrote:mutko en osaa tarkistaa sitä laita esimerkki ja kyl mä noi deleteobjectit osaan
No en nyt vielä laita esimerkki, koska opit paremmin kun joudut itse pähkäilemään.
Protip: kuten jo aikaisemmin on todettu, saat vihun nykyisen hp:n selville ObjectInteger()-funktiolla.
Protip2: <=
Hene
Active Member
Posts: 122
Joined: Wed Apr 22, 2009 8:13 pm

Re: Tyhmät kysymykset (I/2010)

Post by Hene »

DatsuniG wrote:
Hene wrote:Otin uudeksi harjoitusprojektiksi opetella noita vihollissysteemejä ja tarvitsisin hieman apua...

Miten voisi toteuttaa seuraavanlaisen systeemin:
Pelaaja ohjaa objektia A yrittäen napata tietokoneen ohjaamaa objektia B. Jos objektin A ja B välinen etäisyys on pienempi kuin 100 pikseliä, objekti B liikkuu objektia A pakoon (Suurin ongelma nurkat).
Tarkistat funktiolla Distance2 pelaajan ja botin välisen etäisyyden. Tässä on pieni esimerkki kuinka toteuttaa botin liikkuminen tilekartoilla:

Code: Select all

map = LoadMap("Media\cdm2.til","Media\tileset.bmp")
obj = LoadObject("Media/guy.bmp", 72)

dis = 32    // Kuinka lähellä seinän tulee olla ennenkuin botti reagoi         
Repeat
    MoveObject obj, 1
    // Tarkistetaan onko objectin edessä törmäyskerros
    If GetMap(2, ObjectX(obj) + Cos(ObjectAngle(obj)) * Dis, ObjectY(obj) + Sin(ObjectAngle(obj)) * Dis) Then 
        // Edessä oli, joten katsotaan kumpaan suuntaan käännytään
        If GetMap(1, ObjectX(obj) + Cos(ObjectAngle(obj) + 90) * Dis, ObjectY(obj) + Sin(ObjectAngle(obj) + 90) * Dis) = 0 Then
            // Vasemmalla tyhjää, käännytään sinne
            RotateObject obj, ObjectAngle(obj) + 90
        ElseIf GetMap(1, ObjectX(obj) + Cos(ObjectAngle(obj) - 90) * Dis, ObjectY(obj) + Sin(ObjectAngle(obj) - 90) * Dis) = 0 Then
            // Oikealla tyhjää, käännytään sinne
            RotateObject obj, ObjectAngle(obj) - 90
        Else 
            // Umpikuja, käännytään ympäri
            RotateObject obj, ObjectAngle(obj) + 180
        EndIf 
        // Kääntymisen voisi tehdä myös turnobjectilla, mutta silloin reagointietäisyyttä tulisi kasvattaa
    EndIf 
    DrawScreen
Forever 
Thänksit!

Mihinkös kohtaan tuo positionobject pitäisi lätkäistä? Heittää jatkuvasti memorian acces violationia vaikka kokeiltu ties mitä kohtaa... :/
"Baby," I said. "I'm a genius but nobody knows it but me."
Locked