Tyhmät kysymykset (I/2009)

Voit pyytää apua ohjelmointiongelmiin täältä.
Locked
cheeshelmet.jr
Member
Posts: 75
Joined: Tue Aug 28, 2007 6:59 am

Re: Tyhmät kysymykset

Post by cheeshelmet.jr » Sun Jan 20, 2008 10:55 am

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 

User avatar
-Z-
Devoted Member
Posts: 682
Joined: Tue Aug 28, 2007 3:33 pm
Location: In ur danmaku, grazin ur bullets

Re: Tyhmät kysymykset

Post by -Z- » Sun Jan 20, 2008 10:59 am

Minulla taas ei. Enää ukko ei lähde enää suoraan alaspäin, vaan ylöspäin. Kiitos kuitenkin yrityksestä.
"Fallout 3 (#10) marked a shift in the industry, a move that saw the western RPG begin to surpass its Japanese counterparts." -IGN top 100 RPGs of all time

User avatar
Marcoder
Active Member
Posts: 120
Joined: Tue Aug 28, 2007 8:21 am

Re: Tyhmät kysymykset

Post by Marcoder » Sun Jan 20, 2008 11:14 am

-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.

User avatar
-Z-
Devoted Member
Posts: 682
Joined: Tue Aug 28, 2007 3:33 pm
Location: In ur danmaku, grazin ur bullets

Re: Tyhmät kysymykset

Post by -Z- » Sun Jan 20, 2008 11:51 am

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.
"Fallout 3 (#10) marked a shift in the industry, a move that saw the western RPG begin to surpass its Japanese counterparts." -IGN top 100 RPGs of all time

cheeshelmet.jr
Member
Posts: 75
Joined: Tue Aug 28, 2007 6:59 am

Re: Tyhmät kysymykset

Post by cheeshelmet.jr » Sun Jan 20, 2008 1:02 pm

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...

User avatar
nevssons
Devoted Member
Posts: 503
Joined: Sun Jan 13, 2008 6:02 pm

Re: Tyhmät kysymykset

Post by nevssons » Sun Jan 20, 2008 1:11 pm

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)
Koodarina kohtalainen, henkilönä vittumainen
Image

User avatar
Marcoder
Active Member
Posts: 120
Joined: Tue Aug 28, 2007 8:21 am

Re: Tyhmät kysymykset

Post by Marcoder » Sun Jan 20, 2008 2:06 pm

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.

User avatar
iTKEVAnAKKI
Advanced Member
Posts: 335
Joined: Tue Aug 28, 2007 3:55 pm
Location: Siellä jossain

Re: Tyhmät kysymykset

Post by iTKEVAnAKKI » Sun Jan 20, 2008 3:42 pm

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
Projektit:
Joku projekti meneillään... Mitähän siitäkin tulee ;)

User avatar
beg
Newcomer
Posts: 19
Joined: Fri Dec 14, 2007 3:08 pm

Re: Tyhmät kysymykset

Post by beg » Sun Jan 20, 2008 6:45 pm

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()

User avatar
regalis
Advanced Member
Posts: 268
Joined: Mon Aug 27, 2007 9:44 pm

Re: Tyhmät kysymykset

Post by regalis » Sun Jan 20, 2008 7:57 pm

regalis wrote:Miten saan järjestettyä tyypin jäsenet oikeaan järjestykseen esim. energian perusteella? Insertillä ilmeisesti hoituisi, mutta en saanut itse sitä onnistumaan.

☺Guest

Re: Tyhmät kysymykset

Post by ☺Guest » Sun Jan 20, 2008 8:20 pm

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()

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

Re: Tyhmät kysymykset

Post by tuhoojabotti » Sun Jan 20, 2008 8:34 pm

☺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 ;)
Imagedev.tuhoojabotti.com — “Programmer (noun): An organism that turns caffeine into code.”

User avatar
Marcoder
Active Member
Posts: 120
Joined: Tue Aug 28, 2007 8:21 am

Re: Tyhmät kysymykset

Post by Marcoder » Mon Jan 21, 2008 11:05 am

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.

User avatar
beg
Newcomer
Posts: 19
Joined: Fri Dec 14, 2007 3:08 pm

Re: Tyhmät kysymykset

Post by beg » Mon Jan 21, 2008 5:02 pm

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:

User avatar
Marcoder
Active Member
Posts: 120
Joined: Tue Aug 28, 2007 8:21 am

Re: Tyhmät kysymykset

Post by Marcoder » Mon Jan 21, 2008 6:26 pm

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.

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

Re: Tyhmät kysymykset

Post by Jonez » Mon Jan 21, 2008 7:21 pm

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
-Vuoden 2008 aloittelijan ystävä -palkinnon voittaja-
Image <- protestipelikilpailun voittaja.
Space War

User avatar
beg
Newcomer
Posts: 19
Joined: Fri Dec 14, 2007 3:08 pm

Re: Tyhmät kysymykset

Post by beg » Tue Jan 22, 2008 1:45 pm

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? :|

User avatar
Marcoder
Active Member
Posts: 120
Joined: Tue Aug 28, 2007 8:21 am

Re: Tyhmät kysymykset

Post by Marcoder » Tue Jan 22, 2008 2:03 pm

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ää

User avatar
Murskaaja
Member
Posts: 92
Joined: Tue Aug 28, 2007 8:19 pm
Contact:

Re: Tyhmät kysymykset

Post by Murskaaja » Tue Jan 22, 2008 2:04 pm

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-)
ASCII star wars Xtreme | Cool Bombers | Combat (kehitteillä)

RedShadow productions

User avatar
beg
Newcomer
Posts: 19
Joined: Fri Dec 14, 2007 3:08 pm

Re: Tyhmät kysymykset

Post by beg » Tue Jan 22, 2008 3:32 pm

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? :(

Locked