Page 75 of 78

Re: Tyhmät kysymykset (I/2010)

Posted: Tue Dec 28, 2010 8:40 pm
by Pate5

Code: Select all

Function TileToWorldX(tx,tilew,map)
    wx=tx*tilew-ObjectSizeX(map)/2
    Return wx
EndFunction

Function TileToWorldY(ty,tileh,map)
    wy=ty*tileh-ObjectSizeY(map)/2
    Return -wy
EndFunction 
Peräisin vanhasta CBKK:sta.

Re: Tyhmät kysymykset (I/2010)

Posted: Tue Dec 28, 2010 10:24 pm
by JATothrim
Pate5 wrote:

Code: Select all

Function TileToWorldX(tx,tilew,map)
    wx=tx*tilew-ObjectSizeX(map)/2
    Return wx
EndFunction

Function TileToWorldY(ty,tileh,map)
    wy=ty*tileh-ObjectSizeY(map)/2
    Return -wy
EndFunction 
Peräisin vanhasta CBKK:sta.
Ja toimivat vain mikäli karttaa ei ole menty liikuttamaan (0,0) koordinaateista.

Re: Tyhmät kysymykset (I/2010)

Posted: Thu Dec 30, 2010 12:28 pm
by 1234213112
KOitin tehä jotai tekoälyy mut ei siit mitää tullu =D täs nyt ois tää koodi
seuraat vähä aikaa sitä nii jää aina jumittaa jos kulma on esim tasan 90,tasan 180 jne.

Code: Select all

FrameLimit 40
map= LoadMap("Media\cdm2.til","Media\tileset.bmp")
PlayObject map,0,0,0.5
ObjectPickable map,ON
guy= LoadObject("Media\soldier.bmp",72)
Repeat
    MoveObject guy,nopeus
    TurnObject guy,kääntö
    If LeftKey() Then TurnObject guy,5
    If RightKey() Then TurnObject guy, -5
    If UpKey() Then MoveObject guy,2
    If DownKey() Then MoveObject guy, -2
ObjectPick guy
    CloneCameraPosition guy
DrawGame
DrawToWorld ON
Circle PickedX()-5,PickedY()+5,10
If Distance(ObjectX(guy),ObjectY(guy),PickedX(),PickedY())<100 Then
Text 0,0,"seinä on lähellä"
Text 0,20,"objektin kulma "+ObjectAngle(guy)
If ObjectAngle(guy)<90 Then
Text 0,40,"seinä on oikealla-ylhäällä" 
aika=8
kääntö=4
nopeus=0
ElseIf ObjectAngle(guy)>90 And ObjectAngle(guy)<180 Then
Text 0,40,"seinä on vasemmalla-ylhäällä" 
aika=8
kääntö=-4
nopeus=0
ElseIf ObjectAngle(guy)>180 And ObjectAngle(guy)<270 Then
Text 0,40,"seinä on vasemmalla-alhaalla" 
aika=8
kääntö=-4
nopeus=01
ElseIf ObjectAngle(guy)>270 Then
Text 0,40,"seinä on oikealla-alhaalla"
aika=8 
kääntö=4
nopeus=0
EndIf
EndIf
If aika=>1 Then aika=aika-1 
If Distance(ObjectX(guy),ObjectY(guy),PickedX(),PickedY())>100 And aika=<0 Then
kääntö=0
nopeus=2
EndIf 
Text 0,60,"kääntö kulma "+kääntö
Text 0,80,"nopeutesi "+nopeus
Text 0,100,"ajastus "+aika
    DrawScreen
Until EscapeKey() 

Re: Tyhmät kysymykset (I/2010)

Posted: Thu Dec 30, 2010 12:37 pm
by JATothrim
1234213112 wrote:KOitin tehä jotai tekoälyy mut ei siit mitää tullu =D täs nyt ois tää koodi
seuraat vähä aikaa sitä nii jää aina jumittaa jos kulma on esim tasan 90,tasan 180 jne.

Code: Select all

FrameLimit 40
map= LoadMap("Media\cdm2.til","Media\tileset.bmp")
PlayObject map,0,0,0.5
ObjectPickable map,ON
guy= LoadObject("Media\soldier.bmp",72)
Repeat
    MoveObject guy,nopeus
    TurnObject guy,kääntö
    If LeftKey() Then TurnObject guy,5
    If RightKey() Then TurnObject guy, -5
    If UpKey() Then MoveObject guy,2
    If DownKey() Then MoveObject guy, -2
ObjectPick guy
    CloneCameraPosition guy
DrawGame
DrawToWorld ON
Circle PickedX()-5,PickedY()+5,10
If Distance(ObjectX(guy),ObjectY(guy),PickedX(),PickedY())<100 Then
Text 0,0,"seinä on lähellä"
Text 0,20,"objektin kulma "+ObjectAngle(guy)
If ObjectAngle(guy)<90 Then
Text 0,40,"seinä on oikealla-ylhäällä" 
aika=8
kääntö=4
nopeus=0
ElseIf ObjectAngle(guy)>90 And ObjectAngle(guy)<180 Then
Text 0,40,"seinä on vasemmalla-ylhäällä" 
aika=8
kääntö=-4
nopeus=0
ElseIf ObjectAngle(guy)>180 And ObjectAngle(guy)<270 Then
Text 0,40,"seinä on vasemmalla-alhaalla" 
aika=8
kääntö=-4
nopeus=01
ElseIf ObjectAngle(guy)>270 Then
Text 0,40,"seinä on oikealla-alhaalla"
aika=8 
kääntö=4
nopeus=0
EndIf
EndIf
If aika=>1 Then aika=aika-1 
If Distance(ObjectX(guy),ObjectY(guy),PickedX(),PickedY())>100 And aika=<0 Then
kääntö=0
nopeus=2
EndIf 
Text 0,60,"kääntö kulma "+kääntö
Text 0,80,"nopeutesi "+nopeus
Text 0,100,"ajastus "+aika
    DrawScreen
Until EscapeKey() 
Sinun pitää ottaa huomioon myös guy objektin kulma, koska liikutat sitä TurnObject:lla ja MoveObject:lla. Teen paremman vastauksen mikäli jaksat sisentää koodisi.

Re: Tyhmät kysymykset (I/2010)

Posted: Thu Dec 30, 2010 2:01 pm
by 1232412
oon kyl ottanu objektin kulma huomio,koska sen mukaa sitä objektii käännetäänki 4 tai -4,vai mitä tarkotit sillä?

Re: Tyhmät kysymykset (I/2010)

Posted: Thu Dec 30, 2010 2:58 pm
by naputtelija
Pyromanius wrote:Miksi tämä MAVittaa?

Code: Select all

file$ = Trim(Replace(CommandLine(), Chr(34), ""))
filu=OpenToRead(file)
mj$ = ReadString(filu)
Kyllä, ohjelma saa oikean polun. Ja kyllä, tiedostossa on sisältöä. Ja kyllä, se myös saa ladattua sen.
Ongelma on readstringissä, ilman sitä toimii.

Missä voisi olla vika?
CloseFile puuttuu? Tai sitten kannattaisi käyttää readlineä.

Re: Tyhmät kysymykset (I/2010)

Posted: Thu Dec 30, 2010 9:57 pm
by Kille
naputtelija wrote:
Pyromanius wrote:Miksi tämä MAVittaa?

Code: Select all

file$ = Trim(Replace(CommandLine(), Chr(34), ""))
filu=OpenToRead(file)
mj$ = ReadString(filu)
Kyllä, ohjelma saa oikean polun. Ja kyllä, tiedostossa on sisältöä. Ja kyllä, se myös saa ladattua sen.
Ongelma on readstringissä, ilman sitä toimii.

Missä voisi olla vika?
CloseFile puuttuu? Tai sitten kannattaisi käyttää readlineä.
avaat tiedoston file-muuttujaan mutta yrität lukea filu-muuttujasta.

Re: Tyhmät kysymykset (I/2010)

Posted: Thu Dec 30, 2010 10:02 pm
by Viltzu
Kille wrote:
naputtelija wrote:
Pyromanius wrote:Miksi tämä MAVittaa?

Code: Select all

file$ = Trim(Replace(CommandLine(), Chr(34), ""))
filu=OpenToRead(file)
mj$ = ReadString(filu)
Kyllä, ohjelma saa oikean polun. Ja kyllä, tiedostossa on sisältöä. Ja kyllä, se myös saa ladattua sen.
Ongelma on readstringissä, ilman sitä toimii.

Missä voisi olla vika?
CloseFile puuttuu? Tai sitten kannattaisi käyttää readlineä.
avaat tiedoston file-muuttujaan mutta yrität lukea filu-muuttujasta.
Mit vit? Kysymys esitettiin 41 sivulla ja siihen on jo vastattu. Ja hän avaa filu muuttujaan. file:ssä on vain osoite missä tiedosto on.
Ilmeisesti ongelma on ReadStringissä, 41 sivulla esitettiin, että tiedostoon ei ole kirjoitettu WriteStringillä joten se ei löydä mitä lukea. Tjps. Readline korjannee ongelman. (Tai kirjoittaa writestringillä)

Naputtelija: ei ole tarpeen vastata enää jos kysymyksee on jo ratkaisu, varsinkaa jos kysymys on noin vanha.

Re: Tyhmät kysymykset (I/2010)

Posted: Fri Dec 31, 2010 2:28 pm
by JATothrim
1232412 wrote:oon kyl ottanu objektin kulma huomio,koska sen mukaa sitä objektii käännetäänki 4 tai -4,vai mitä tarkotit sillä?
Kun sisensin koodin puolestasi löysin vian. Iffi hässäkkän ehdot tekevät juuri sitä, mitä olet kirjoittanut sinne: kääntele ja liikuta objektia kaikilla muilla kulmilla, paitsi tasakulmilla 0, 90, 180 ja 270. Käytä <= ja >= operaattoreita, tai käsittele tasakulmat erikseen. :)

Re: Tyhmät kysymykset (I/2010)

Posted: Fri Dec 31, 2010 3:19 pm
by naputtelija
Kannattaisi tarkastaa viestin oikeinkirjoitus, sillä se lisää uskottavuutta. Tai jos tuo oli jotain murretta niin kirjoituksissa kannattaa käyttää edes vähän kirjakielisempää tekstiä.

Or if you are from england/USA, remember that we also have english forums!

Re: Tyhmät kysymykset (I/2010)

Posted: Fri Dec 31, 2010 10:32 pm
by DJ-Filbe
Mites se menikään se asetus, että tietyntyyppiset tiedostot avataan tietyssä ohjelmassa? Pitäisi saada tehtyä cb-ohjelma, joka linkittää noita tiedostopäätteitä ohjelmiin.

Re: Tyhmät kysymykset (I/2010)

Posted: Sun Jan 02, 2011 6:21 pm
by 24243
Mite saan ,nii ettei peli aina jumitu ku kutsun funktioo?Siin funktios vihollis käännetään oikeelle tai vasemalle kunnes seinii ei enää näy,nii kaikki muu aina jumittuu käännön ajaksi.

Re: Tyhmät kysymykset (I/2010)

Posted: Sun Jan 02, 2011 7:09 pm
by JATothrim
24243 wrote:Mite saan ,nii ettei peli aina jumitu ku kutsun funktioo?Siin funktios vihollis käännetään oikeelle tai vasemalle kunnes seinii ei enää näy,nii kaikki muu aina jumittuu käännön ajaksi.
Laittaisitko funktiosi näkyville? Kristallipalloni kuva on kovin sumea. ;)
Muista että ohjelmaa ajetaan rivi riviltä ja CB-ohjelmissa kaikki tapahtuu yksitellen. Saattaa olla että tapasi kääntää objektia vie yksinkertaisesti vain liian kauan tai ohjelma jää kääntelemään objektia ikuisesti löytämättä ratkaisua.

Re: Tyhmät kysymykset (I/2010)

Posted: Sun Jan 02, 2011 7:21 pm
by 242142

Code: Select all

Function käännetään_vasemmalle(_obj)
Repeat
ObjectPick _obj
TurnObject _obj,3
DrawScreen
 
Until(Distance(ObjectX(_obj),ObjectY(_obj),PickedX(),PickedY())>80)

End Function  

Re: Tyhmät kysymykset (I/2010)

Posted: Sun Jan 02, 2011 7:30 pm
by valscion
242142 wrote:

Code: Select all

Function käännetään_vasemmalle(_obj)
Repeat
ObjectPick _obj
TurnObject _obj,3
DrawScreen
 
Until(Distance(ObjectX(_obj),ObjectY(_obj),PickedX(),PickedY())>80)

End Function  
Objektia pyöritetään ikuisesti, sillä et liikuta sitä mihinkään, jolloin tuo Distance-funktion palauttama arvo ei muutu mihinkään. Jos etäisyys poimittuihin koordinaatteihin on aluksi pienempi kuin 80, jää ohjelma ikuiseen silmukkaan tuon Until-ehtolauseen takia. Lisää tuonne Repeat-silmukkaan sisälle ennen drawscreeniä komento MoveObject _obj, joku_määrä_liikettä, niin jossain vaiheessa silmukasta SAATETAAN päästä pois. Kuitenkin tuossa voi ehkä käydä niin, että objekti ei koskaan pääse tarpeeksi kauas poimituista koordinaateista vaikka sitä kuinka liikuteltaisiin ja pyöriteltäisiin.

Suosittelen rekisteröitymistä foorumeille, varsinkin jos aiot vielä jatkaa koodailua CB:n parissa :).

Re: Tyhmät kysymykset (I/2010)

Posted: Sun Jan 02, 2011 7:38 pm
by 2324
Siis ei see jää ikuisesti sinne. laitan ton koko koodin niin ymmärrätte.
juu ja tiiän et ton kääntymisen ois voinu tehä yhelläki funktiol ,mut kokeilin nyt aluks saada toimii oikei=)

Code: Select all

FrameLimit 60 'rajoita nopeutta
SCREEN 800,600
kartta = LoadMap("Media\cdm2.til","Media\tileset.bmp")
PlayObject kartta,0,0,1
ObjectPickable kartta,ON
ukko = LoadObject ("Media\guy.bmp",72)
pelaaja = LoadObject ("Media\guy.bmp",72)
obj1=MakeObject()
obj2=MakeObject()

SetupCollision ukko, kartta, 1, 4, 2
PositionObject ukko,-180,-200

Repeat

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

objx=ObjectX(ukko)
objy=ObjectY(ukko)
ang=ObjectAngle(ukko)

CloneObjectPosition obj1,ukko
RotateObject obj1,ang+20
CloneObjectPosition obj2,ukko
RotateObject obj2,ang-20


    CloneCameraPosition pelaaja

DrawGame
DrawToWorld ON

If tehdään=0 Then
ObjectPick ukko

ukko_pickx=PickedX()
ukko_picky=PickedY()
Circle PickedX() -5,PickedY()+5,10,ON
ObjectPick obj1

obj1_pickx=PickedX()
obj1_picky=PickedY()
Circle PickedX() -5,PickedY()+5,10,ON
ObjectPick obj2

obj2_pickx=PickedX()
obj2_picky=PickedY()
Circle PickedX() -5,PickedY()+5,10,ON



If Distance(objx,objy,obj2_pickx,obj2_picky)>60 Then
nopeus=2
Else
käännetään_vasemmalle(ukko)
nopeus=0
EndIf 

If Distance(objx,objy,obj1_pickx,obj1_picky)>60 Then
nopeus=2
Else
käännetään_oikealle(ukko)
nopeus=0
EndIf 
EndIf 

MoveObject ukko,nopeus

    DrawScreen

Forever

Function käännetään_vasemmalle(_obj)
Repeat
ObjectPick _obj
TurnObject _obj,3
DrawScreen
 
Until(Distance(ObjectX(_obj),ObjectY(_obj),PickedX(),PickedY())>80)

End Function  


Function käännetään_oikealle(_obj)
Repeat
ObjectPick _obj
TurnObject _obj,-3
DrawScreen 
Until(Distance(ObjectX(_obj),ObjectY(_obj),PickedX(),PickedY())>80)
End Function 

Re: Tyhmät kysymykset (I/2010)

Posted: Sun Jan 02, 2011 8:01 pm
by valscion
2324 wrote:Siis ei see jää ikuisesti sinne. laitan ton koko koodin niin ymmärrätte.
juu ja tiiän et ton kääntymisen ois voinu tehä yhelläki funktiol ,mut kokeilin nyt aluks saada toimii oikei=)
Aa katsos, en tajunnut että se objekti poimii uudet koordinaatit siinä loopissa. Mutta siis niin, lagaaminen johtuu suurelta osin siitä että kutsut aina DrawScreeniä joka loopin kierros. Otappa DrawScreenit pois noista funktioista, niin johan huomaat eron ;)

Re: Tyhmät kysymykset (I/2010)

Posted: Sun Jan 02, 2011 8:29 pm
by 20242
Juu nyt se toimii,mut mite saisin ton objektin kääntymää siihe oikeesee kulmaa,samanlail kun drawscreenin kanssa =)

Re: Tyhmät kysymykset (I/2010)

Posted: Sun Jan 02, 2011 8:34 pm
by SPuntte
Jos homma toimii oikein DrawScreenin kansa, mutta jää jumiin ilman DrawScreeniä, ongelmana on todennäköisesti UpdateGamen puute. Lisää se poimintasilmukoihin ja kokeile, auttaako.

Re: Tyhmät kysymykset (I/2010)

Posted: Sun Jan 02, 2011 8:48 pm
by TheFish
20242 wrote:Juu nyt se toimii,mut mite saisin ton objektin kääntymää siihe oikeesee kulmaa,samanlail kun drawscreenin kanssa =)
Jos nyt ymmärsin oikein, ongelma on siinä, että muu peli pysähtyy siksi aikaa kun objekti kääntyy? Tämä johtuu tietenkin siitä, että käännät objektia eri loopissa varsinaisen pelisi pääloopin sijasta. Saat sen korjattua korvaamalla tuon repeat..until loopin if-lauseella.

Pseudona:

Code: Select all

function kaannetaan_vasemmalle(_obj)
    poimi objekti
    if etaisyys_poimittuun < 80 then
        käännä _obj
    endif
end function