Tyhmät kysymykset (I/2009)

Voit pyytää apua ohjelmointiongelmiin täältä.
Locked
User avatar
esa94
Guru
Posts: 1855
Joined: Tue Sep 04, 2007 5:35 pm

Re: Tyhmät kysymykset

Post by esa94 »

Komento on DrawGame.

Kysyn tätä jo toista kertaa, lol:

Pystyykö tilekartan hit-kerroksesta löytämään nurkkia ja risteyksiä automaattisesti?
regalis
Advanced Member
Posts: 268
Joined: Mon Aug 27, 2007 9:44 pm

Re: Tyhmät kysymykset

Post 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.
Nassi_Setä
Advanced Member
Posts: 281
Joined: Sat Jun 28, 2008 5:19 pm
Location: Hämeessä miä

Re: Tyhmät kysymykset

Post 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ä.
\../(-_-)\../ <---klick MyBrute Image
Jotain evilii on tekeillä....
TheFish
Developer
Developer
Posts: 477
Joined: Mon Aug 27, 2007 9:28 pm
Location: Joensuu

Re: Tyhmät kysymykset

Post 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).
CoolBasic henkilökuntaa
Kehittäjä
MaGetzUb
Guru
Posts: 1715
Joined: Sun Sep 09, 2007 12:35 pm
Location: Alavus

Re: Tyhmät kysymykset

Post 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

Solar Eclipse
Meneillä olevat Projektit:
We're in a simulation, and God is trying to debug us.
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm

Re: Tyhmät kysymykset

Post 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)
Nassi_Setä
Advanced Member
Posts: 281
Joined: Sat Jun 28, 2008 5:19 pm
Location: Hämeessä miä

Re: Tyhmät kysymykset

Post 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?
Last edited by Nassi_Setä on Sun Jun 29, 2008 8:55 pm, edited 1 time in total.
\../(-_-)\../ <---klick MyBrute Image
Jotain evilii on tekeillä....
MaGetzUb
Guru
Posts: 1715
Joined: Sun Sep 09, 2007 12:35 pm
Location: Alavus

Re: Tyhmät kysymykset

Post 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...
Solar Eclipse
Meneillä olevat Projektit:
We're in a simulation, and God is trying to debug us.
Nassi_Setä
Advanced Member
Posts: 281
Joined: Sat Jun 28, 2008 5:19 pm
Location: Hämeessä miä

Re: Tyhmät kysymykset

Post 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
\../(-_-)\../ <---klick MyBrute Image
Jotain evilii on tekeillä....
Mr_Noob
Newcomer
Posts: 30
Joined: Tue Aug 28, 2007 1:05 pm
Location: koti
Contact:

Re: Tyhmät kysymykset

Post by Mr_Noob »

Miten saan tiedostosta luettua readintillä luvun muuttujaan, vai saanko mitenkään :!:
programmer of DSG wrote:
EDIT:

aika hauska peli, vähän tylsä

User avatar
valscion
Moderator
Moderator
Posts: 1599
Joined: Thu Dec 06, 2007 7:46 pm
Location: Espoo
Contact:

Re: Tyhmät kysymykset

Post 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.
cbEnchanted, uudelleenkirjoitettu runtime. Uusin versio: 0.4.1 — Nyt myös sorsat GitHubissa!
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
Olwi
Devoted Member
Posts: 557
Joined: Sun Dec 30, 2007 4:15 pm
Location: Muhos

Re: Tyhmät kysymykset

Post 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:
Huuda mun ip:tä!
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: Tyhmät kysymykset

Post 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.
Olwi
Devoted Member
Posts: 557
Joined: Sun Dec 30, 2007 4:15 pm
Location: Muhos

Re: Tyhmät kysymykset

Post 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.
Last edited by Olwi on Tue Jul 01, 2008 10:22 pm, edited 2 times in total.
Huuda mun ip:tä!
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: Tyhmät kysymykset

Post 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.
Olwi
Devoted Member
Posts: 557
Joined: Sun Dec 30, 2007 4:15 pm
Location: Muhos

Re: Tyhmät kysymykset

Post 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
Huuda mun ip:tä!
TheFish
Developer
Developer
Posts: 477
Joined: Mon Aug 27, 2007 9:28 pm
Location: Joensuu

Re: Tyhmät kysymykset

Post 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...)
CoolBasic henkilökuntaa
Kehittäjä
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: Tyhmät kysymykset

Post 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
Olwi
Devoted Member
Posts: 557
Joined: Sun Dec 30, 2007 4:15 pm
Location: Muhos

Re: Tyhmät kysymykset

Post 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ä:)
Huuda mun ip:tä!
Harakka
Advanced Member
Posts: 430
Joined: Mon Aug 27, 2007 9:08 pm
Location: Salo
Contact:

Re: Tyhmät kysymykset

Post 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)
Peli piirtokomennoilla - voittaja, Virtuaalilemmikkipeli - voittaja,
Sukellusvenepeli - voittaja, Paras tileset - voittaja
Vaihtuva päähenkilö - voittaja, Autopeli - voittaja sekä
Hiirellä ohjattava peli - voittaja B)
Locked