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
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 ?!
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 ?!
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.
Re: Tyhmät kysymykset
Posted: Mon Jan 21, 2008 5:26 pm
by Marcoder
beg wrote:Nyt en oikein ymmärtänyt.
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.
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.
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
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?