Page 50 of 154

Re: Tyhmät kysymykset

Posted: Fri Jun 27, 2008 6:59 pm
by esa94
Komento on DrawGame.

Kysyn tätä jo toista kertaa, lol:

Pystyykö tilekartan hit-kerroksesta löytämään nurkkia ja risteyksiä automaattisesti?

Re: Tyhmät kysymykset

Posted: Sun Jun 29, 2008 12:11 am
by regalis
esa94 wrote:Pystyykö tilekartan hit-kerroksesta löytämään nurkkia ja risteyksiä automaattisesti?
Ainakaan siihen ei ole mitään valmiita komentoja, mutta eiköhän ne jollakin laskukaavalla pystytä selvittämään, varsinkin jos nurkat ja risteykset ovat säännöllisen muotoisia. Jos olet kehittelemässä jotain reitinhakusysteemiä, luulen että pääset paljon helpommalla kun vain merkkaat risteykset data-kerrokseen.

Re: Tyhmät kysymykset

Posted: Sun Jun 29, 2008 5:26 pm
by Nassi_Setä
Miten vois tehä space impact tyylisen ohjauksen että alus liikkuu eteen päin johonkin pisteeseen asti eikä menis sen "yli" ja myös taakse päin samanmoinen.Ylös alas ohjauksen oon jo saanu aikaan,
kun sen tekemiseen nyt ei tartte olla mikään ruudin keksiä.

Re: Tyhmät kysymykset

Posted: Sun Jun 29, 2008 5:32 pm
by TheFish
Nassi_Setä wrote:Miten vois tehä space impact tyylisen ohjauksen että alus liikkuu eteen päin johonkin pisteeseen asti eikä menis sen "yli" ja myös taakse päin samanmoinen.Ylös alas ohjauksen oon jo saanu aikaan,
kun sen tekemiseen nyt ei tartte olla mikään ruudin keksiä.
Kun pelaaja painaa nappia josta alus liikkuu eteenpäin, tarkistat onko alus mennyt rajan yli -> jos on, liikutat takaisin rajan kohdalle. Samaan tyyliin kuin learning centerin ampumis esimerkissä kun tarkastetaan onko ammus menny oranssin neliön ulkopuolelle(, paitsi että et tietenkään poista alusta vaan siirrät takaisin rajan sisälle).

Re: Tyhmät kysymykset

Posted: Sun Jun 29, 2008 5:33 pm
by MaGetzUb
Ei se vaikeaa ole..

Code: Select all

Alusx = 200
Alusy = 150
Repeat
Alusy = Alusy + 4*(Downkey()-Upkey())
Alusx = Alusx + 4*(Rightkey()-Downkey())
If Alusx => 400 Then Alusx = 400
If Alusx =< 0 then Alusx = 0
If Alusy => 300 Then Alusy = 300
If Alusy =< 0 then Alusy = 0
Box Alusx-10,Alusy-10,20,20
Drawscreen
Forever 

EDIT:

En tiiä toimiiko en testannu... Omat jutut ei yleensä toimi. :P


Re: Tyhmät kysymykset

Posted: Sun Jun 29, 2008 5:43 pm
by Koodiapina
Tein toisen version siltä varalta, että Programmer of DSG:n esimerkissä on virheitä (Ei toiminut mulla).

Code: Select all

    alusx = ScreenWidth()/2-10
    alusy = ScreenHeight()/2-10
    While True
        alusx = alusx + ((RightKey() And alusx < ScreenWidth()-20)-(LeftKey() And alusx>0))*4
        alusy = alusy + ((DownKey() And alusy < ScreenHeight()-20)-(UpKey() And alusy>0))*4
        Box alusx,alusy,20,20
        DrawScreen 
    Wend 
EDIT: Rivejä tuli aika vähän B)

Re: Tyhmät kysymykset

Posted: Sun Jun 29, 2008 6:27 pm
by Nassi_Setä
kiitoksia ja nyt vähän vaikeempi kysymys:kuinka generoida vihuja jonkun matkan päähän ukkulista sillee että ne ei menis kartan ulkopuolelle ta seinien sisään?

Re: Tyhmät kysymykset

Posted: Sun Jun 29, 2008 8:18 pm
by MaGetzUb
Offit eka
Nassi_Setä wrote:EDIT:
Nyt meni sormi suuhun miten ton boxin tilalle saa ladatun objektin?
Sanoit tuossa yhdessä topicissa että olet ohjelmoinut 2v? Et varmaan CB:llä...
Tuosta Grandin koodista muokkaat maailmakoordinaateiksi soveltuvan, Ja sioitat objektin positionobjectilla x-, ja y-koordinaatteihin..
Grandi wrote:Tein toisen version siltä varalta, että Programmer of DSG:n esimerkissä on virheitä (Ei toiminut mulla).
Ei näköjään toimikkaan... :(
Nassi_Setä wrote:kiitoksia ja nyt vähän vaikeempi kysymys:kuinka generoida vihuja jonkun matkan päähän ukkulista sillee että ne ei menis kartan ulkopuolelle ta seinien sisään?
Esim näin:

Code: Select all

//Koodia
Kulma = Rand(0,360)//Vihun luontikulma
Vihu.Vihut = New(Vihut)
Vihu\Vihu_Obj = CloneObject(Joku)
PositionObject Vihu\Vihu_Obj,Objectx(omaukko) + cos(Kulma) * 400, ObjectY(omaukko) + cos(Kulma) * 400
For Vihu.Vihut = Each Vihut
If GetMap(0,Objectx(Vihu\Vihu_Obj),ObjectY(Vihu\Vihu_Obj)) = 0 Or GetMap(2,Objectx(Vihu\Vihu_Obj),ObjectY(Vihu\Vihu_Obj)) = 1 then 
PositionObject Vihu\Vihu_Obj,Objectx(omaukko) + cos(Rand(360)) * 400, ObjectY(omaukko) + cos(Rand(360))  * 400
Endif 
Next Vihu


//Päivitä vihut
Tuollaisella koodin olen joskus räpeltänyt...

Re: Tyhmät kysymykset

Posted: Sun Jun 29, 2008 9:00 pm
by Nassi_Setä
juu sain ratkastuu sen boxi objekti jutun noin 30 min viimesimmän viestin lähettämisen jälkee,mut unohin tulla poistaa sen editin.
Ja oon osannu tehä vihuja aika kauan mut en pistää niit paikkoihin sille et ne ei meni esim. seinien sisään

Re: Tyhmät kysymykset

Posted: Tue Jul 01, 2008 12:05 pm
by Mr_Noob
Miten saan tiedostosta luettua readintillä luvun muuttujaan, vai saanko mitenkään :!:

Re: Tyhmät kysymykset

Posted: Tue Jul 01, 2008 1:54 pm
by valscion
Mr_Noob wrote:Miten saan tiedostosta luettua readintillä luvun muuttujaan, vai saanko mitenkään :!:
Vaikka tälläsellä koodilla:

Code: Select all

f = OpenToRead("file")
  muuttuja = ReadInt(f)
CloseFile f
Tuo lukee siis tiedoston alusta Integer -pituisen muuttujan. Jos tiedostossa on aluks jotain muuta, niin lue ne eka pois.

Re: Tyhmät kysymykset

Posted: Tue Jul 01, 2008 9:10 pm
by Olwi
Ohjelma,joka lisäis joka paikkaan,jossa ei ole seinää(eli hit-kerrosta) yhden pallon. Pallot ovat kuvia,koko 32x32.
Tuollaista tarvisin piGManiin,ehkä parhaaseen PacMan-klooniin maailmassa :lol:

Re: Tyhmät kysymykset

Posted: Tue Jul 01, 2008 9:47 pm
by koodaaja

Code: Select all

Type pallo
    Field x
    Field y
End Type

For x = 0 to MapWidth()
    For y = 0 to MapHeight()
        
        If GetMap2(2, x, y) = 0 Then
            p.pallo = New(pallo)
            p\x = x*tilew + tilew/2 - ImageWidth(pallokuva)/2
            p\y = y*tileh + tileh/2 - ImageHeight(pallokuva)/2
        EndIf
        
    Next y
Next x
Sitten piirrettäessä komennat DrawToWorld OFF, ON, OFF ja käyt kaikki pallot läpi piirtäen pallon kuvan koordinaatteihin p\x ja p\y.

EDIT: pyöreitä lukuja (taas D:), 750. posti.

Re: Tyhmät kysymykset

Posted: Tue Jul 01, 2008 10:04 pm
by Olwi
Kiitos,lähdenpä testailemaan :)


Sori,mä olen pöljä,mutta miten se pitäs nyt hoitaa.
En vain tajua


Edit:
Oho,Drawtoworld unohtu muttei se toimi siltikään.


Siis tota piirtämistä meinaan.

Sitten ne pitäisi poistaa kun objecti pig on niiden päällä mutta se nyt menee itsekin.

Re: Tyhmät kysymykset

Posted: Tue Jul 01, 2008 10:18 pm
by koodaaja
Mitä et ymmärrä?

Ihmettelen kyllä, miksi käytät tilekarttoja ja kuvia. Objekteillakin onnistuisi vallan nätisti ja olisi ehkä vähän selkeämpää, ainakin jos on niihin tottunut.

Re: Tyhmät kysymykset

Posted: Tue Jul 01, 2008 10:26 pm
by Olwi

Code: Select all

For x = 0 to MapWidth()
    For y = 0 to MapHeight()
       
        If GetMap2(2, x, y) = 0 Then
            p.pallo = New(pallo)
            p\x = x*tilew + tilew/2 - ImageWidth(pallokuva)/2
            p\y = y*tileh + tileh/2 - ImageHeight(pallokuva)/2
       DrawImage pallokuva,p\x,p\y
       EndIf
       
    Next y
Next x
Jotenkin tuollai?
Ainoa vaikutus on että fps tippuu alle 10


Edit:
Niin ja vain nuo pisteet(pallot) ovat kuvia



Edit
No tietenkin,nehän tulivat kartan alle.
Drawgamen lisäsin,nyt taas fps alle 10 mutta YKSI ainoa pallo näkyy keskellä näyttöä:P

Re: Tyhmät kysymykset

Posted: Tue Jul 01, 2008 11:09 pm
by TheFish
Nuo for loopit kannattaisi käydä läpi vain kerran alussa ja tallentaa koordinaatit typeen. Sen jälkeen käyt vain sen typen for-each loopilla läpi pääsilmukassa (tai missä ne pitää piirtää) ja piirrät kuvat koordinaatteihin.

Ja tuossa pitää myös huomata että koodaaja jätti muuttujat tileh ja tilew määrittelemättä.

Ja nuo for loopit voi tietysti aloittaa 1:stä eikä 0:sta, koska tilejen numerotkin alkavat 1:stä.

Code: Select all

Type pallo
    Field x
    Field y
End Type

kartta = LoadMap("Media\cdm2.til","Media\tileset.bmp")

pallokuva = LoadImage("media/cow.bmp")

tilew = 32
tileh = 32

For x = 1 to MapWidth()
    For y = 1 to MapHeight()
       
        If GetMap2(2, x, y) = 0 Then
            p.pallo = New(pallo)
            p\x = x*tilew + tilew/2 - ImageWidth(pallokuva)/2 - (MapWidth()*tilew/2+tilew)
            p\y = y*tileh + tileh/2 - ImageHeight(pallokuva)/2 - (MapHeight()*tileh/2+tileh)
        EndIf
       
    Next y
Next x

Repeat

    MoveCamera 0, (UpKey() - DownKey()) * 3
    MoveCamera (RightKey() - LeftKey()) * 3

    DrawGame

    DrawToWorld OFF, ON, OFF
    For p.pallo = Each pallo
        DrawImage pallokuva, p\x, p\y
    Next p

    Text 10, 10, "FPS: " + FPS()
    
    DrawScreen

Forever 
(tuossa koordinaattien laskemisessa voi olla jotain ihmeellisiä logiikka virheitä, mutta se toimii ja tähän aikaan illasta ei jaksa miettiä sen kummempia...)

Re: Tyhmät kysymykset

Posted: Tue Jul 01, 2008 11:44 pm
by koodaaja
Kiitos korjauksesta ja hienosta esimerkistä TheFish, en muistanutkaan että tilenumerointi alkaa ykkösestä 8D

@Olw1: Mikäli et halua kartan ulkopuolelle palluroita, vaihda tämä:

Code: Select all

If GetMap2(2, x, y) = 0 Then
tähän:

Code: Select all

If GetMap2(2, x, y) = 0 And GetMap2(0, x, y)<>0 Then

Re: Tyhmät kysymykset

Posted: Wed Jul 02, 2008 12:40 am
by Olwi
Hyvinhän tuo toimi,mutta kun laitoin sen gosubin sisään niin lakkas pelittämästä.

Code: Select all


kenttäI:
Cls

kartta=LoadMap("media\kenttä1.til","Media\pigman-tileset.jpg")
ShowObject pig,ON
ObjectOrder pig,1
SetupCollision pig,kartta,2,4,2
PositionObject pig,-20,20
For x = 1 to MapWidth()
    For y = 1 to MapHeight()
       
If GetMap2(2, x, y) = 0 Then
            p.pallo = New(pallo)
            p\x = x*tilew + tilew/2 - ImageWidth(pallokuva)/2 - (MapWidth()*tilew/2+tilew)
            p\y = y*tileh + tileh/2 - ImageHeight(pallokuva)/2 - (MapHeight()*tileh/2+tileh)
        EndIf
       
    Next y
Next x
While GetMap(3,ObjectX(pig),ObjectY(pig))=1



 DrawGame


 For p.pallo = Each pallo
        DrawImage pallokuva, p\x, p\y
    Next p
  
  
Wend
Return

Edit
oho,201 viesti,ja TIETENKIN tyhmissä kysymyksissä:)

Re: Tyhmät kysymykset

Posted: Wed Jul 02, 2008 11:13 am
by Harakka
Nyt kuvat piiretään vain kerran aliohjelman lopussa. Kokeileppa siirtää tämä pätkä pelin päälooppiin, jossa kontrollit ym. systeemit ovat. Meinaan siis tätä pätkää:

Code: Select all

For p.pallo = Each pallo
        DrawImage pallokuva, p\x, p\y
Next p
While-loopin ideaa en tajunnut. Kuvia piirretään kun possun alla on datakerrosta? Looppi ei pääse päättymäänkään koska possua ei voi siirtää mihinkään.

(Tuhannes viesti tyhmissä kysymyksissä :o)