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.
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
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ä:
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ä
)