Page 1 of 1

Kuvien piirtäminen/säilöminen

Posted: Fri May 23, 2014 8:21 pm
by Szanne
Olen mietiskellyt, että miten olisi järkevintä toteuttaa kuvien piirtämien tai oikeastaan säilöminen projektissa. Jos vaikka ajatellaan, että esim. pelissä pitää piirtää monta kertaa ruudulla olevia esineitä, joidenka paikka voi kuitenkin muuttua vähän, tai ne voivat kadota vähäksi aikaa ruudulta. Siinähän tapauksessa ei voi piirtää kaikkia kuvia yhteen kuvaan, jonka sitten piirtäisi. Eihän?

Itse ongelmahan on se, että kuviahan ei voi määritellä globaaleiksi muuttujiksi, jolloin kuvien piirtämisfunktioille joutuu antamaan miljoona sata seitsemänkymmentä parametriä, jos haluaa, että yksi funktio voi tehdä kaiken piirtämisen. Mietinkin, että olisiko järkevin ratkaisu sijoittaa kaikki kuvat esim. yhteen tyyppikokoelmaan, jota voidaan sitten funktioissa käydä läpi ja piirtää sen avulla, koska tyypithän ovat globaaleja.

Otan mielellään vastaan parempia ideoita asian toteuttamiseksi. Tuuminkin, että kysymys on kuitenkin relevantti myös muille ohjelmointikielille. Toivottavasti vastaus ei ole mikään äärimmäisen yksinkertainen, minkä olen vain sivuuttanut koko ajan ja en ole tajunnut. : D

Re: Kuvien piirtäminen/säilöminen

Posted: Sat May 24, 2014 10:48 am
by Latexi95
Szanne wrote:Olen mietiskellyt, että miten olisi järkevintä toteuttaa kuvien piirtämien tai oikeastaan säilöminen projektissa. Jos vaikka ajatellaan, että esim. pelissä pitää piirtää monta kertaa ruudulla olevia esineitä, joidenka paikka voi kuitenkin muuttua vähän, tai ne voivat kadota vähäksi aikaa ruudulta. Siinähän tapauksessa ei voi piirtää kaikkia kuvia yhteen kuvaan, jonka sitten piirtäisi. Eihän?

Itse ongelmahan on se, että kuviahan ei voi määritellä globaaleiksi muuttujiksi, jolloin kuvien piirtämisfunktioille joutuu antamaan miljoona sata seitsemänkymmentä parametriä, jos haluaa, että yksi funktio voi tehdä kaiken piirtämisen. Mietinkin, että olisiko järkevin ratkaisu sijoittaa kaikki kuvat esim. yhteen tyyppikokoelmaan, jota voidaan sitten funktioissa käydä läpi ja piirtää sen avulla, koska tyypithän ovat globaaleja.

Otan mielellään vastaan parempia ideoita asian toteuttamiseksi. Tuuminkin, että kysymys on kuitenkin relevantti myös muille ohjelmointikielille. Toivottavasti vastaus ei ole mikään äärimmäisen yksinkertainen, minkä olen vain sivuuttanut koko ajan ja en ole tajunnut. : D
Tottakai kuvat voivat olla globaaleita muuttujia. Kuvien "handle" on ihan tavallinen integer muuttuja joten pystyt tekemään siitä globaalin. Jos sinä haluat paljon kuvia joilla kaikilla on eri sijainti ja niitä mahdollisesti liikutellaan tai piilotellaan välillä, niin voit ihan hyvin käyttää objekteja ja antaa DrawScreenin huolehtia piirtämisestä. Sitten sinun pitää vain huolehtia oikeasta järjestyksestä objektien latauksessa tai järjestellä niitä ObjectOrderilla että ne piirtyvät haluamallasi tavalla päällekkäin. Tyyppikokoelma jossa lista kuvista luonnollisesti toimii myös.

Re: Kuvien piirtäminen/säilöminen

Posted: Sun May 25, 2014 11:25 am
by Szanne
Testasin kerran, että voivatko kuvat olla globaaleja muuttujia ja tulin johtopäätökseen, etteivät voivat olla. Olin siis tupeksinut jotain muuta koodin kanssa silloin.. Objekteja en ole vähään aikaan käyttänyt, niin en tajunnut niiden käyttömahdollisuuksia. Pitääpä laittaa korvan taakse.

Re: Kuvien piirtäminen/säilöminen

Posted: Sun May 25, 2014 5:48 pm
by Latexi95
Itse asiassa jopa Global komennon esimerkki esittelee, kuinka kuva voi olla globaali muuttuja. #%$ merkit globaalien muuttujien nimissä taisivat aiheuttaa jotain jännyyksiä.

Re: Kuvien piirtäminen/säilöminen

Posted: Mon May 26, 2014 12:58 pm
by Jonez
Muistaakseni, jos esittelee muuttujan globaaliksi käyttäen "As"-avainsanaa, muuttujanimen perässä olevat erikoismerkit joilla normaalisti määriteltäisiin muuttujan tyyppi (#, $), jne., ovat vain osa muuttujanimeä.

Eli
Global a$ As Float

tekee float-tyyppisen muuttujan jonka muuttujanimi on "a$".

Re: Kuvien piirtäminen/säilöminen

Posted: Mon May 26, 2014 5:33 pm
by Szanne
En ollut sitten katsonut tuota Global-komennon esimerkkiä ollenkaan.. Päättelin, että kuvat eivät voi olla globaaleja, koska en tiennyt tuota kuvan handle-juttua, koska siis esittelin kaikki muut globaalit muuttujat As Integer etc. Kiitoksia neuvoista!