Tyhmät kysymykset (I/2010)

Voit pyytää apua ohjelmointiongelmiin täältä.
Locked
MrMonday
Advanced Member
Posts: 378
Joined: Fri Oct 10, 2008 2:35 pm

Re: Tyhmät kysymykset (I/2010)

Post by MrMonday »

Wau, Tuhannet kiitokset kaikille nopeasta avusta :D
Alankin heti tarkastelemaan tarkemmin noita vastauksia...
EDIT:

No höh, tuo korjattu koodi ei sitten toiminutkaan.. ja jos yrittää laittaa että Car\Valittu = 0 niin iskee MAVia :? Perin mystistä, etten sanoisi..

EDIT:

Legendille kiitokset tuossa alemmassa viestissä tehdystä selvennyksestä, ehke tämä alkaa jo pikkuhiljaa valjeta minullekkin :lol:

Last edited by MrMonday on Sun Mar 07, 2010 4:40 pm, edited 1 time in total.
legend
Advanced Member
Posts: 371
Joined: Wed Nov 18, 2009 8:06 pm

Re: Tyhmät kysymykset (I/2010)

Post by legend »

MrMonday wrote:Wau, Tuhannet kiitokset kaikille nopeasta avusta :D
Alankin heti tarkastelemaan tarkemmin noita vastauksia...
EDIT:

No höh, tuo korjattu koodi ei sitten toiminutkaan.. ja jos yrittää laittaa että Car\Valittu = 0 niin iskee MAVia :? Perin mystistä, etten sanoisi..


Johtuen siitä, että aina kun muutat jotain parametriä taulukosta(Type), joudut käymään kaikki autot läpi, joka on aika sekaavaa aluksi.
Eli kun muutat Car\Valittu = 0, sinun täytyy ensiksi määrittää mikä taulukon kohta on se oikea.
Eli laitat siihen for CAr.... sitten If Car\valittu = 1 then Car\valittu = 0

Tässä on korjattu versio siitä kohdasta ja kommentoitu.

Code: Select all

  If KeyHit(28) Then
            
            For Car.Autot = Each AUTOT ' joudutaan taas käymään kaikki autot läpi ja etsiä se oikea!!
                If Car\Valittu = 1  'oikea löytyi
                    Car\Valittu = 0 'muutettaan se for each silmukassa
                    Exit 'poistutaan silmukasta sillä oikea auto on jo löydetty
                EndIf
            Next Car
        
            ClearKeys
            MoveObject Guy,0 ,-40
            Goto Jalkaisin
        EndIf
User avatar
Ruuttu
Devoted Member
Posts: 687
Joined: Thu Aug 30, 2007 5:11 pm
Location: Finland, Sipoo

Re: Tyhmät kysymykset (I/2010)

Post by Ruuttu »

Miten saan laskettua kahden kulman välisen eron?

180 ja 200 = 20
350 ja 10 = 20

Kiitos.
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: Tyhmät kysymykset (I/2010)

Post by koodaaja »

En nyt ihan satavarma ole, mutta tämän pitäisi toimia, mikäli haluat aina pienemmän tuloksen. Max() antaa vastaavasti suuremman.

Code: Select all

ero = Min(Abs(a-b), 360-Abs(a-b))
Quru3
Newcomer
Posts: 16
Joined: Tue Feb 16, 2010 9:54 pm

Re: Tyhmät kysymykset (I/2010)

Post by Quru3 »

Alan taas tuota testaajaa tekee,nii miten sais sitä näytönohjainta rasitettuu?tarvii laittaa niitä kolmioita näytölle jotai 500,että alka fps tippuu alas,mut sitä lataus aikaaki tulee aika paljo lisää ja muutenkin alkaa jo hidastuu sen takii,kun pitää 500 kolmio tehdä...Oisko jotai toista tapaa,ettei tarttis mitää 500 kolmioo laittaa ruudulle pyörii.CBGL avulla siis...jotai kuvioita mitkä rasittais paljo?
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: Tyhmät kysymykset (I/2010)

Post by koodaaja »

Shadereita ei CBGL muistaakseni tue - niillä saisi melkoista rasitusta jo yhdelläkin kolmiolla. Raaka kolmioiden piirto kannattanee toteuttaa display listillä, jolloin CB:n pää ei hidasta hommaa yhtään niin pahasti, vaan saadaan jopa oikeaa käsitystä siitä, paljonko koneessa on tehoa. 500 kolmion kanssa tulee kuitenkin se ongelma, että se ei ainakaan omalla koneellani tuo FPS:ää lähellekään tuhatta, joten joudut mittaamaan esimerkiksi tietyn framemäärän piirtoon kuluvan ajan tai laskemaan FPS:n käsin (muuttujalla, jota kasvatetaan yhdellä joka frame)
Nassi_Setä
Advanced Member
Posts: 281
Joined: Sat Jun 28, 2008 5:19 pm
Location: Hämeessä miä

Re: Tyhmät kysymykset (I/2010)

Post by Nassi_Setä »

pystyykö CB piirtämään koodissa luotuun kuvaan jo aiemmin ladatun kuvan tai kuvia?, jos voi niin miten?

Ajatus ei taahdo kulkea ja manuaalista löytyy vaan DrawToImage piiirtokomennoilla esimerkki.
\../(-_-)\../ <---klick MyBrute Image
Jotain evilii on tekeillä....
otto90x
Advanced Member
Posts: 349
Joined: Mon Aug 27, 2007 9:00 pm
Location: Lapinjärvi, Finland
Contact:

Re: Tyhmät kysymykset (I/2010)

Post by otto90x »

Eli DrawToImage-DrawImage-DrawToScreen combolla tai Copyboxilla saa tuon aikaan varsin kivasti. Copybox on vähän nopeampi(?), mutta jättää kuvien maskivärin huomioimatta, jolloin usein piirretyn kuvan ympärille jää mustat reunukset. Mikä ei välttämättä tietenkään haittaa jos pohja on musta ja piirretyt kuvat eivät mene päällekkäin.

Code: Select all

pohja=MakeImage(400,300)

//tämä tässä vain jotta copyboxin heikkouden näkee paremmin
DrawToImage pohja
    Color cbwhite
    Box 0,0,400,300,1
DrawToScreen 

img=LoadImage("media/cow.bmp")
iw=ImageWidth(img)
ih=ImageHeight(img)

Repeat

    If MouseHit(1) Then 
        //drawtoimage ottaa huomioon maskivärin
        DrawToImage pohja
            DrawImage img, MouseX()-2,MouseY()-2
        DrawToScreen 
    ElseIf MouseHit(2) Then    
        //copybox nopampi, muttei ota maskiväriä huomioon
        //jättää mustat reunukset
        CopyBox 0,0,iw,ih,MouseX(),MouseY(),Image(img),Image(pohja)
    EndIf
    
    
    DrawImage pohja,0,1
    
    DrawScreen 

Forever
Otto Martikainen a.k.a. MetalRain, otto90x, kAATOSade.
Runoblogi, vuodatusta ja sekoiluja.
User avatar
CCE
Artist
Artist
Posts: 650
Joined: Mon Aug 27, 2007 9:53 pm

Re: Tyhmät kysymykset (I/2010)

Post by CCE »

Nassi_Setä wrote:pystyykö CB piirtämään koodissa luotuun kuvaan jo aiemmin ladatun kuvan tai kuvia?, jos voi niin miten?

Ajatus ei taahdo kulkea ja manuaalista löytyy vaan DrawToImage piiirtokomennoilla esimerkki.
Samoin kuin ruudullekin. Eli kutakuinkin näin:

Code: Select all

DrawtoImage( kuva1 ) ' piirretään kuva2 kuva1:en sisään
DrawImage kuva2, 0, 0
DrawtoScreen
Edit: Ohoh, meni aivan tuo otto90x:n viesti ohi silmieni, voisin ehkä ottaa hänet pois Foe-listastani. :)
Quru3
Newcomer
Posts: 16
Joined: Tue Feb 16, 2010 9:54 pm

Re: Tyhmät kysymykset (I/2010)

Post by Quru3 »

Eli kolmioilla xD Vai kummat rasittaa enemmä kolmiot vai neliöt?Tai jotai reunan pehmennystä?ei jaksais mitää 500 kolmioo siihe laittaa -_-
KilledWhale
Tech Developer
Tech Developer
Posts: 543
Joined: Sun Aug 26, 2007 2:43 pm
Location: Liminka

Re: Tyhmät kysymykset (I/2010)

Post by KilledWhale »

Quru3 wrote:Eli kolmioilla xD Vai kummat rasittaa enemmä kolmiot vai neliöt?Tai jotai reunan pehmennystä?ei jaksais mitää 500 kolmioo siihe laittaa -_-
Luonnollisesti kolmiot rasittavat neliöitä enemmän. Senhän voi päätellä jo miettimällä kuinka paljon monimutkaisempaa matematiikkaa niiden piirto vaatii. Eipä taida tukea reunojen pehmennystä :)
CoolBasic henkilökuntaa
Kehittäjä

cbFUN Kello
cbSDL
Whale.dy.fi

<@cce> miltäs tuntuu olla suomen paras
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: Tyhmät kysymykset (I/2010)

Post by koodaaja »

Quru3 wrote:Eli kolmioilla xD Vai kummat rasittaa enemmä kolmiot vai neliöt?Tai jotai reunan pehmennystä?ei jaksais mitää 500 kolmioo siihe laittaa -_-
En tajua, mikä paha siinä 500 (mikä on edelleen kovin vähän, joku 5000 pitäisi nyt vähintään olla, mieluummin 500 000, että nykykoneet rasittuvat) kolmion laittamisessa on. For-loopilla ja satunnaiskoordinaateilla se on muutaman rivin homma, tai jos haluat fiinistellä voit generoida jonkun mallin, esimerkiksi kuutio tai pallo nyt ei kovin monimutkaista säätöä vaadi. Tai miksei vaikka kleinin pullo, olen tehnyt sitä varten jopa semivalmiin generointisysteemin. Siinäkin menee maksimissaan parikymmentä riviä koodia, minkä ei pitäisi tappaa ketään.
Quru3
Newcomer
Posts: 16
Joined: Tue Feb 16, 2010 9:54 pm

Re: Tyhmät kysymykset (I/2010)

Post by Quru3 »

en osaa jotenkin laittaa tota tonne loopin ulkopuolelle,nii tippuu jo 100 kolmiolla fps 125 :DJos laitan loppin ulkopuolelle jotai noista kolmion lataus jutuista nii sitte siinä näytöllä menee vaa jotai väreilyy.Ja pitää tehä typellä,että saan esim ,et jokanen kolmio on aina vaik 0,5 kaukana toisistaan..
Viltzu
Guru
Posts: 1132
Joined: Sun Aug 26, 2007 5:45 pm
Location: Alavieska
Contact:

Re: Tyhmät kysymykset (I/2010)

Post by Viltzu »

Quru3 wrote:en osaa jotenkin laittaa tota tonne loopin ulkopuolelle,nii tippuu jo 100 kolmiolla fps 125 :DJos laitan loppin ulkopuolelle jotai noista kolmion lataus jutuista nii sitte siinä näytöllä menee vaa jotai väreilyy.Ja pitää tehä typellä,että saan esim ,et jokanen kolmio on aina vaik 0,5 kaukana toisistaan..
Kuulostaa hieman siltä että sinun pitäisi tutkiskella manuaalia hieman tarkemmin.
EDIT:

Ei tarvitse kyllä tyyppejä sotkea mukaan.

Code: Select all

For x = 0 To 500000 Step 5
LuoKolmio x...
Next x
Tuossa pienenä pseudona miten 500 000 kolmion luonti onnistuu niin, että ne ovat 5 pikselin päässä toisistaan.[/edit]
Quru3
Newcomer
Posts: 16
Joined: Tue Feb 16, 2010 9:54 pm

Re: Tyhmät kysymykset (I/2010)

Post by Quru3 »

häh ;D Siis huomasin nytten vast ton jutun ,et se hidastuu sen takii kun ne on siel loopin sisällä..Ja tarviiha siinä typee käyttää jos haluun,et se kloonaa 100 000 tollasta kolmiota ja jokanen kolmio on 0,5 kauempana toisesta kolmiosta.Eikä cbgl taida mitään kovin hienoja manuskoja olla.Heti jos koittaa jotai laittaa loopin ulkopuolelle,ettei se hidastuis nii siinä alkaa väreilee jotai värei.
edit:En siis saa millää luotuu sitä kolmioo tuolla loopin ulkopuolella..
temu92
Web Developer
Web Developer
Posts: 1226
Joined: Mon Aug 27, 2007 9:56 pm
Location: Gamindustri
Contact:

Re: Tyhmät kysymykset (I/2010)

Post by temu92 »

Quru3 wrote:Ja tarviiha siinä typee käyttää jos haluun,et se kloonaa 100 000 tollasta kolmiota ja jokanen kolmio on 0,5 kauempana toisesta kolmiosta.
Ei tarvi edelleenkään. Nk. pseudona:

Code: Select all

spacing# = 0.5
For i=0 to 400
    Triangle(i*spacing, y, ... etc ...)
Next i
Tuo piirtäisi 400 kolmiota 0.5 välein.
Quru3
Newcomer
Posts: 16
Joined: Tue Feb 16, 2010 9:54 pm

Re: Tyhmät kysymykset (I/2010)

Post by Quru3 »

Näytönohjaimena on tollane hd 4890.Jos kloonaan vaikka 200 kolmioo ja ne kolmiot on päällekkäin eikä pyöri niin fps tippuu johonkin 100.Ja se varmaa johtuu siitä ,että joutuu kloonaamaan loopin sisällä.Enkä saa mitenkää kloonattuu niitä kolmioita loopin ulkopuolella.CBgl käytän ja jos siinä koittaa sen loopin ulkopuolella kloonaa niitä kolmioita nii ne ei tuu siihe.En osaa selitää,mut en saa kloonattuu niitä kolmioita loopin ulkopuolella,kun loopissa se kloonaa kokoajan uudet 100?Ja hidastuu varmaa sen takia
Awaclus
Forum Veteran
Posts: 2939
Joined: Tue Aug 28, 2007 2:50 pm

Re: Tyhmät kysymykset (I/2010)

Post by Awaclus »

Quru3 wrote:Näytönohjaimena on tollane hd 4890.Jos kloonaan vaikka 200 kolmioo ja ne kolmiot on päällekkäin eikä pyöri niin fps tippuu johonkin 100.Ja se varmaa johtuu siitä ,että joutuu kloonaamaan loopin sisällä.Enkä saa mitenkää kloonattuu niitä kolmioita loopin ulkopuolella.CBgl käytän ja jos siinä koittaa sen loopin ulkopuolella kloonaa niitä kolmioita nii ne ei tuu siihe.En osaa selitää,mut en saa kloonattuu niitä kolmioita loopin ulkopuolella,kun loopissa se kloonaa kokoajan uudet 100?Ja hidastuu varmaa sen takia
Kloonaa? Ei siinä mitään kloonaamista tarvita. Pelkkä simppeli tämmöinen:

Code: Select all

For i = 1 to 156156156156156
    PiirraKolmio (i, 156)
Next i

Function PiirraKolmio (x,y)
    //miten ikinä piirrätkään sen kolmion
EndFunction
riittää.
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: Tyhmät kysymykset (I/2010)

Post by koodaaja »

Hän piirtää sen edelleen cbGL:llä, jolloin homma on hieman erilainen. 'Kloonaaminen' kuulostaa kuitenkin siltä, ettet tiedä OpenGL:stä juuri mitään. Systeemihän toimii kuin piirtokomennot, jos piirrät jotain jollain framella niin se ei ole seuraavalla siinä. Mitään piirtämääsi ei laiteta muistiin yhtä framea pidemmäksi ajaksi, joten tottakai piirrät asiat loopissa.

Mutta tee se kuitenkin järkevästi eli display listillä. Se on systeemi, joka tallentaa kolmiosi, joten kun piirrät display listiin ensin jotain, voit kutsua sitä myöhemmin yhdellä komennolla. cbGL:n mukana tulee jopa kaksi esimerkkikoodia aiheesta, teet siis valtavan display listin (piirtämällä kolmioita esimerkiksi for-loopissa) ja sitten kutsut display listiä piirtäessäsi.
Quru3
Newcomer
Posts: 16
Joined: Tue Feb 16, 2010 9:54 pm

Re: Tyhmät kysymykset (I/2010)

Post by Quru3 »

Valtavan iso displaylist?Eikös toi displaylistissä vaa määritellä millanen se kolmio on?Nii miks siitä pitää sitten tehä niin valtavan iso vai mitä tarkotit :D
Nytten kun oon koittanu siellä loopissa vaan laittaa jotai

Code: Select all

repeat

for x=0 to 100
cbgl0(glLoadIdentity)                                         ' Reset The Current Modelview Matrix
    cbgl3f(glTranslate, -1.5, 0.0, -6.0)                         ' Move Left 1.5 Units And Into The Screen 6.0
    cbgl4f(glRotate, rtri, 0.0, 1.0, 0.0)                        ' Rotate The Triangle On The X axis ( NEW )

    cbgl1i(glCallList, 1)
next x
Tolla se fps tippuu heti johonkin 125,ja tossahan ne kolmiot on päällekkäin...nii mitä teen tossa väärin kun fps tippuu noin alas?
EDIT:

Kone on aika uusi,ettei pitäisi sen takia tippua fps noin alas,jotain tossa vaan on väärin

Locked