Page 24 of 154

Re: Tyhmät kysymykset

Posted: Sun Jan 20, 2008 9:55 am
by cheeshelmet.jr
Funktiossa se vika mielestäni oli ja itselläni alkoi pelittämään tällä(En tiedä toimiiko sinulla sitten).

Code: Select all

Function CurvePointObject2(_obj, x, y, _smoothness = 5)
    angle#      = ObjectAngle(_obj)
    newangle#   = GetAngle(ObjectX(_obj),ObjectY(_obj),x,-y )
    angle#      = CurveAngle(newangle, angle, _smoothness)
    RotateObject _obj, angle
EndFunction 

Re: Tyhmät kysymykset

Posted: Sun Jan 20, 2008 9:59 am
by -Z-
Minulla taas ei. Enää ukko ei lähde enää suoraan alaspäin, vaan ylöspäin. Kiitos kuitenkin yrityksestä.

Re: Tyhmät kysymykset

Posted: Sun Jan 20, 2008 10:14 am
by Marcoder
-Z- wrote:Minulla taas ei. Enää ukko ei lähde enää suoraan alaspäin, vaan ylöspäin. Kiitos kuitenkin yrityksestä.
Vika on siinä että funktiolle välittämäsi x- ja y-parametrit ovat kartan tilekoordinaatteja eikä suinkaan maailmankoordinaatteja.

Re: Tyhmät kysymykset

Posted: Sun Jan 20, 2008 10:51 am
by -Z-
Marcoder wrote:
-Z- wrote:Minulla taas ei. Enää ukko ei lähde enää suoraan alaspäin, vaan ylöspäin. Kiitos kuitenkin yrityksestä.
Vika on siinä että funktiolle välittämäsi x- ja y-parametrit ovat kartan tilekoordinaatteja eikä suinkaan maailmankoordinaatteja.
Argh, tyhmä moka : <> Yritin nyt säätää sitten tuon mukaan jotakin, mutta en onnistunut. Tässä olisi koodi:

Code: Select all

    For y=1 To MapHeight()
    For x=1 To MapWidth()
        If GetMap2(3,x,y)=point Then
            For i = 1 To x
                x2+16
            Next i
            For i = 1 To y
                y2+16
            Next i
            curvepointobject2(car,x2,y2,10)
        EndIf
        If GetMap(3,ObjectX(ukko),ObjectY(ukko))=point Then point+1
    Next x
    Next y
tuollaisella yritin onnistua, mutta taisi mennä vähän mynkään. Kiitos etukäteen jos autat.

Re: Tyhmät kysymykset

Posted: Sun Jan 20, 2008 12:02 pm
by cheeshelmet.jr
no itselläni on tämmöinen hölmö kysymys että miten voin tarkastaa joka kieroksella jonkun pisteen sijainnin koska autoni uppoaa seinään sisälle vaikka mitä yrittäisin auton etu kulma ja muut kulmat aina uppoavat seinään...

Re: Tyhmät kysymykset

Posted: Sun Jan 20, 2008 12:11 pm
by nevssons
Miks elipsi ei seuraa hiirtä?

Code: Select all

kuva = MakeImage(400, 300)
eliON = False 
elix = 0
eliy = 0
hiirix=True 
hiiriy=True 
elipsi=True 
Repeat
ristix1=MouseX() -5
ristiy1=MouseY() -5
ristix2=MouseX() +5
ristiy2=MouseY() +5
   If hiirix And hiiriy Then hiiri=True Else hiiri=False 
   If elipsi And MouseHit(1) Then eli=True Else eli=False 
   If hiiri Then 
   ShowMouse OFF
   Line ristix1,MouseY(),ristix2,MouseY()
   Line MouseX(),ristiy1,MouseX(),ristiy2
   Else
   ShowMouse ON
   EndIf 
   
      If  hiiri And eli Then
        If elion Then 
            DrawToImage kuva
            Ellipse elix, eliy, Distance (elix, eliy, MouseX(),MouseX()),Distance (elix, eliy, MouseY(),MouseY()),0 
            DrawToScreen
            elinon=True 
        EndIf 
        eliX = MouseX()
        eliY = MouseY()
        elion = True   
    EndIf
     If elinon Then 
     elion=False 
     elinon=False 
     EndIf 
    DrawImage kuva, 0, 0
    If elion Then Ellipse elix, eliy, Distance (elix, elix, MouseX(),MouseX()),Distance (eliy, eliy, MouseY(),MouseY()),0
    If MouseHit(3) Then SaveImage kuva,"images/kuva.bmp"
    DrawScreen
Forever 
(kysyinpähän toisen kerran että vähän huomiotaisiin)

Re: Tyhmät kysymykset

Posted: Sun Jan 20, 2008 1:06 pm
by Marcoder
nevssons wrote:Miks elipsi ei seuraa hiirtä?
...
(kysyinpähän toisen kerran että vähän huomiotaisiin)
Huomioin jo edellisen mutta koska kysymys on varsin huonosti muotoiltu niin en vastannut. Vastaan kuitenkin nyt ettei tarvitse kysyä samaa kolmanteen kertaan.

Ratkaisu tulee tässä:

Code: Select all

Ellipse Min(elix, MouseX()), Min(eliy, MouseY()), Abs(MouseX() - elix), Abs(MouseY() - eliy), OFF
Ja ennen kuin liität tuota koodisi niin pyytäisin että selvität mitä tuossa oikein tapahtuu.

Re: Tyhmät kysymykset

Posted: Sun Jan 20, 2008 2:42 pm
by iTKEVAnAKKI

Code: Select all

         
 For cx=1 To b
            tx = RoundUp(ObjectX(tarkistus(a,b))/40.0)+MapWidth()/2
            ty = MapHeight()-(RoundDown(ObjectY(tarkistus(a,b))/40.0)+MapHeight()/2)  
            If GetMap2(3,tx,ty)=0 Then
              MoveObject tarkistus(a,b),40
            Else
              PositionObject tarkistus(a,b),100000,10000
            EndIf
            If GetMap(2,tx,ty) Then 
              ShowObject tarkistus(a,b),OFF
            EndIf
          Next cx
Eli jos datakerroksessa ei ole mitään niin liikutaan, jos on niin siirretään kauaks. Jos on törmäys kerros niin piilotetaan. Mutta se ei huomaa tuota törmäys kerrosta, vaikka siinä pitäis olla. Missä vika?

EDIT: Tein koko homman uusiks... Mut edittaan tähän jos tulee ongelmia, niinku varmaan tulee :P

Re: Tyhmät kysymykset

Posted: Sun Jan 20, 2008 5:45 pm
by beg
Jälleen noloja ongelmia: Pelaaja ei "huitaise" jos olen laittanut tuon rivin 64 ja 65 koodiin.

Code: Select all

SCREEN 200,100

aloitapeli=LoadObject("media\aloitapeli.bmp")
lopetapeli=LoadObject("media\lopetapeli.bmp")
hiiri=LoadObject ("media\cursor.bmp")
ShowMouse OFF

PositionObject aloitapeli,0,30
PositionObject lopetapeli,0,-20

Repeat 
PositionObject hiiri,MouseWX(),MouseWY()

If ObjectsOverlap (hiiri,aloitapeli) And MouseHit(1) Then Goto peli
If ObjectsOverlap (hiiri,lopetapeli) And MouseHit(1) Then End 


DrawScreen 
Forever 






peli:

SCREEN 0,0,0,cbfullscreen 
FrameLimit 40







heppu=LoadObject("media\kamu.bmp",72)
tähtäys=LoadObject("media\hiiri.bmp")

huitaisu=LoadAnimObject("Media\huitaisu2.bmp",150,50,0,11,72)
ShowObject huitaisu,OFF
ObjectRange huitaisu,30,51



PositionObject heppu,500,-400



Repeat
PositionObject tähtäys,MouseWX(),MouseWY()

If KeyDown (17) Then TranslateObject heppu,0,2
If KeyDown (30) Then TranslateObject heppu,-2,0
If KeyDown (31) Then TranslateObject heppu,0,-2
If KeyDown (32) Then TranslateObject heppu,2,0


If MouseHit(1) Then 
        
         PaintObject heppu,huitaisu 
         PlayObject heppu,0,10,0.40
         
         Else 
         PlayObject heppu,0
         
         
         
             
      EndIf 
      
    
    
PointObject heppu,tähtäys 

    
    DrawScreen

Until EscapeKey()

Re: Tyhmät kysymykset

Posted: Sun Jan 20, 2008 6:57 pm
by regalis
regalis wrote:Miten saan järjestettyä tyypin jäsenet oikeaan järjestykseen esim. energian perusteella? Insertillä ilmeisesti hoituisi, mutta en saanut itse sitä onnistumaan.

Re: Tyhmät kysymykset

Posted: Sun Jan 20, 2008 7:20 pm
by ☺Guest
Miksi MAV ?! :o

Code: Select all

FrameLimit 40


DrawToWorld ON



 
guy=LoadObject("Media\guy.bmp",180)

pallo=MakeObject()
pallokuva=MakeImage(128,128)
DrawToImage pallokuva
Circle 0,0,128,0
DrawToScreen
PaintObject pallo,-pallokuva

ObjectPickable pallo,3
Repeat



    If LeftKey() Then TurnObject guy,2
    If RightKey() Then TurnObject guy, -2
    If UpKey() Then MoveObject guy,2
    If DownKey() Then MoveObject guy, -2


   
    Color cbred

    PixelPick guy
    If PickedObject() Then
        Circle PickedX() -5,PickedY()+5,10
    EndIf
    
    DrawGame
    
    DrawScreen

Until EscapeKey()

Re: Tyhmät kysymykset

Posted: Sun Jan 20, 2008 7:34 pm
by tuhoojabotti
☺Guest wrote:Miksi MAV ?! :o

Code: Select all

FrameLimit 40


DrawToWorld ON



 
guy=LoadObject("Media\guy.bmp",180)

pallo=MakeObject()
pallokuva=MakeImage(128,128)
DrawToImage pallokuva
Circle 0,0,128,0
DrawToScreen
PaintObject pallo,-pallokuva

ObjectPickable pallo,3
Repeat



    If LeftKey() Then TurnObject guy,2
    If RightKey() Then TurnObject guy, -2
    If UpKey() Then MoveObject guy,2
    If DownKey() Then MoveObject guy, -2


   
    Color cbred

    PixelPick guy
    If PickedObject() Then
        Circle PickedX() -5,PickedY()+5,10
    EndIf
    
    DrawGame
    
    DrawScreen

Until EscapeKey()
pixelpick ei tykkää lukea noin ohutta ympyrää ja hyppää pois siitä esim laatikolla se toimii ;)

Re: Tyhmät kysymykset

Posted: Mon Jan 21, 2008 10:05 am
by Marcoder
beg wrote:Jälleen noloja ongelmia: Pelaaja ei "huitaise" jos olen laittanut tuon rivin 64 ja 65 koodiin.
Ei tietenkään huitaise, sehän lukee suoraan koodissa.
Sen sijaan että tuijottaa vain komentoja, kannattaa koodia lukea ajatuksella sillä jokainen rivi on merkitsevä.
Siistitään hieman tuota ongelmakohtaa ja luetaan mitä siinä tapahtuu. Huomataankin heti että asia on päivänselvä.

Code: Select all

If MouseHit(1) Then 
    PaintObject heppu,huitaisu 
    PlayObject heppu,0,10,0.40
Else 
    PlayObject heppu,0
EndIf 
Suosittelen koodin muuttamista selviksi sanoiksi (tai oikeastaan suosittelen sitä jo suunnitteluvaiheessa).
Sanallisessa muodossa koodi on seuraavanlainen.
Jos hiirtä klikataan niin näytetään hepun huitaisuanimaatio mutta jos ei klikata niin näytetään hepun peruskuva.

No näinhän sen pitäisi ollakin mutta miksei silti toimi? No siksi että elämä jatkuu myös huitaisun jälkeenkin. Eli koittaa aika (muutaman millisekunnin päästä) jolloin ohjelma suorittaa saman koodin uudestaan koska sitähän ajetaan loopissa. Hiiren klikkaus on muisto vain eli ohjelma suorittaa tuon Else-haaran ja pysäyttää animaation välittömästi.

Re: Tyhmät kysymykset

Posted: Mon Jan 21, 2008 4:02 pm
by beg
Marcoder wrote:
beg wrote:Jälleen noloja ongelmia: Pelaaja ei "huitaise" jos olen laittanut tuon rivin 64 ja 65 koodiin.
Ei tietenkään huitaise, sehän lukee suoraan koodissa.
Sen sijaan että tuijottaa vain komentoja, kannattaa koodia lukea ajatuksella sillä jokainen rivi on merkitsevä.
Siistitään hieman tuota ongelmakohtaa ja luetaan mitä siinä tapahtuu. Huomataankin heti että asia on päivänselvä.

Code: Select all

If MouseHit(1) Then 
    PaintObject heppu,huitaisu 
    PlayObject heppu,0,10,0.40
Else 
    PlayObject heppu,0
EndIf 
Suosittelen koodin muuttamista selviksi sanoiksi (tai oikeastaan suosittelen sitä jo suunnitteluvaiheessa).
Sanallisessa muodossa koodi on seuraavanlainen.
Jos hiirtä klikataan niin näytetään hepun huitaisuanimaatio mutta jos ei klikata niin näytetään hepun peruskuva.

No näinhän sen pitäisi ollakin mutta miksei silti toimi? No siksi että elämä jatkuu myös huitaisun jälkeenkin. Eli koittaa aika (muutaman millisekunnin päästä) jolloin ohjelma suorittaa saman koodin uudestaan koska sitähän ajetaan loopissa. Hiiren klikkaus on muisto vain eli ohjelma suorittaa tuon Else-haaran ja pysäyttää animaation välittömästi.
Nyt en oikein ymmärtänyt. :oops:

Re: Tyhmät kysymykset

Posted: Mon Jan 21, 2008 5:26 pm
by Marcoder
beg wrote:Nyt en oikein ymmärtänyt. :oops:
Väännetäänpäs rautalangasta.
Kun hiirtä klikataan, se tunnistetaan funktiolla MouseHit. MouseHit siis tapahtuu vain ja ainoastan silloin kun hiiren nappi painetaan pohjaan.
No, huomataan tuo hiiren klikkaus ja aloitetaan animaatio. Koska ohjelma pyörii silmukassa, se tarkoittaa että pian tullaan samaan kohtaan koodia. Nytpä ei MouseHit enää toteudukaan sillä sehän klikattiin jo silmukan edellisellä kierroksella. Nyt hiiren nappi on enää vaan pohjassa ja klikkaus on tapahtunut jo aikoja (millisekunteja) sitten.
Koska klikkausta ei siis tällä kierroksella havaita niin suoritetaan tuo else-haara jossa animaatio pysäytetään.

Re: Tyhmät kysymykset

Posted: Mon Jan 21, 2008 6:21 pm
by Jonez
Nyt en oikein ymmärtänyt. :oops:
Jos et vieläkään ymmärtänyt, niin ehkä seuraava koodi havainnollistaa asiaa.

Kokeile koodia, muuta sen jälkeen koodista kohta MouseDown MouseHitiksi, ja kokeile uudestaan.

Code: Select all

ukko =LoadAnimObject("Media\zerorun1.bmp",47,51,0,13)
MaskObject ukko, cbMagenta

Repeat
    If MouseDown(1) Then
        PlayObject ukko, 2, 11
        Text 20, 40, "Animoidaan"
    Else
        PlayObject ukko, 0
        Text 20, 40, "Ei animoida"
    EndIf
    Text 20, 20, "Hiiren 1-nappulasta juoksee"
    DrawScreen
Forever

Re: Tyhmät kysymykset

Posted: Tue Jan 22, 2008 12:45 pm
by beg
Jonez wrote:
Nyt en oikein ymmärtänyt. :oops:
Jos et vieläkään ymmärtänyt, niin ehkä seuraava koodi havainnollistaa asiaa.

Kokeile koodia, muuta sen jälkeen koodista kohta MouseDown MouseHitiksi, ja kokeile uudestaan.

Code: Select all

ukko =LoadAnimObject("Media\zerorun1.bmp",47,51,0,13)
MaskObject ukko, cbMagenta

Repeat
    If MouseDown(1) Then
        PlayObject ukko, 2, 11
        Text 20, 40, "Animoidaan"
    Else
        PlayObject ukko, 0
        Text 20, 40, "Ei animoida"
    EndIf
    Text 20, 20, "Hiiren 1-nappulasta juoksee"
    DrawScreen
Forever
Olipas se yksinkertaista! Nyt se toimii ihan hyvin, mutta mitenhän saisin vihollisen menettämään elämän aina kun animaatio on kulunut tiettyyn kohtaan ja tietenkin myös vain silloin kun pelaaja katsoo vihua kohti? :|

Re: Tyhmät kysymykset

Posted: Tue Jan 22, 2008 1:03 pm
by Marcoder
beg wrote:...mutta mitenhän saisin vihollisen menettämään elämän aina kun animaatio on kulunut tiettyyn kohtaan? :|
If ObjectFrame(ukko) >= tietty_kohta Then vähennä_vihun_elämää

Re: Tyhmät kysymykset

Posted: Tue Jan 22, 2008 1:04 pm
by Murskaaja
beg wrote:Olipas se yksinkertaista! Nyt se toimii ihan hyvin, mutta mitenhän saisin vihollisen menettämään elämän aina kun animaatio on kulunut tiettyyn kohtaan? :|
Objectframe(objektimuuttuja) funktio kertoo missä kohtaa animaatio on menossa (huom. palauttaa desimaaliluvun). Eli yksinkertaisesti tarkistat tuon avulla onko animaatio tietyssä kohdassa. Jos on, kannattaa tarkistaa vaikkapa objectsoverlapilla, että osuttiinko vihuun ylipäätänsä ja vasta sitten alkaa vähentämään siltä elämää.

edit: jahas, sieltähän se tulikin jo 8-)

Re: Tyhmät kysymykset

Posted: Tue Jan 22, 2008 2:32 pm
by beg

Code: Select all

SCREEN 200,100

aloitapeli=LoadObject("media\aloitapeli.bmp")
lopetapeli=LoadObject("media\lopetapeli.bmp")
hiiri=LoadObject ("media\cursor.bmp")
ShowMouse OFF

PositionObject aloitapeli,0,30
PositionObject lopetapeli,0,-20



Repeat 
PositionObject hiiri,MouseWX(),MouseWY()

If ObjectsOverlap (hiiri,aloitapeli) And MouseHit(1) Then Goto peli
If ObjectsOverlap (hiiri,lopetapeli) And MouseHit(1) Then End 


DrawScreen 
Forever 






peli:

SCREEN 0,0,0,cbfullscreen 
FrameLimit 40





kuollutvihu1=LoadObject("media\kuollutvihu1.bmp",72)
ShowObject kuollutvihu1,OFF 
vihu1=LoadObject("media\vihu1.bmp",72)
heppu=LoadObject("media\kamu.bmp",72)
tähtäys=LoadObject("media\hiiri.bmp")

huitaisu=LoadAnimObject("Media\huitaisu2.bmp",150,50,0,11,72)
ShowObject huitaisu,OFF
ObjectRange huitaisu,30,51



PositionObject heppu,500,-400
PositionObject vihu1,500,-425


vihu1elämä=3


Repeat
If vihu1elämä<1 Then PaintObject vihu1,kuollutvihu1
If ObjectsOverlap (heppu,vihu1) And ObjectFrame>1=ObjectY(vihu1),ObjectX(vihu1) Then vihu1elämä-1




PositionObject kuollutvihu1,ObjectX(vihu1),ObjectY(vihu1)
PositionObject tähtäys,MouseWX(),MouseWY()

If KeyDown (17) Then TranslateObject heppu,0,2
If KeyDown (30) Then TranslateObject heppu,-2,0
If KeyDown (31) Then TranslateObject heppu,0,-2
If KeyDown (32) Then TranslateObject heppu,2,0



huitaisu:
If MouseDown(1) Then 
    PaintObject heppu,huitaisu 
    PlayObject heppu,0,10,0.40
    
Else 
    PlayObject heppu,0
EndIf 



      
    
    
PointObject heppu,tähtäys 

    
    DrawScreen

Until EscapeKey()
Käytinkö nyt tuota objectframea ihan oikein vai onko vika muualla? :(