Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C: Tasohyppely-ongelma

Sivun loppuun

Megant92 [20.03.2005 19:26:51]

#

Miten pystyisi tarkistamaan osuuko joku maahan?
Tai miten se tehtäisiin parhaiten?
Eikä oikein voi laittaa bittikarttaan, koska peli-alue on niin suuri.Käytän SDL:lää.

Metabolix [20.03.2005 19:32:24]

#

Miten olet mahtanut sen maan määritellä?

Jos peli on tilepohjainen, tarkistus on helppo tehdä laskemalla.

Jos taso taas on jollakin muulla tavalla säännönmukainen, eli jos olet esittänyt tason geometrisesti (hieman 3D-mallin tyylisesti) periaatteella "Viiva A:sta B:hen, kaari B:stä C:hen D:tä sivuten" jne, voit tehdä jonkinlaisia laskelmia.

Muuten ei ole muita vaihtoehtoja kuin tarkistaa, menevätkö pikselit päällekkäin. Sitä varten kannattaa luoda tasosta mustavalkokuva, jossa vaikkapa mustat pisteet ovat seinää. Tähän on helpompi verrata kuin oikeaan pohjakuvaan. Tällaisella systeemillä toimii esimerkiksi Worms, jossa tosiaan tarvitaan pikselintarkkaa maata.

Jos tuon mustavalko-tarkistuspohjan koko on este, kannattanee väsätä oma kuvanlataaja jollekin BMP:tä tiivimmälle formaatille kuten PCX (tai PNG :).

aWW [20.03.2005 19:36:27]

#

älä keksi pyörää uudelleen, osta (tai lainaa kirjastosta) kirja "Peliohjelmointi Inside"

Säästät hermot ja mikä tärkeintä paljon aikaa

Megant92 [20.03.2005 19:50:53]

#

Hermot taitaa mennä sitä etsittäessä.
Ja jos tilejä yritän käyttää ongelmaksi tulee, että tarvitaan melkein joka pikseli niihin.Yhden kentän leveys voi olla vaikka 20*näytönleveys.

Joo olen ajatellut tuota mustavalko-juttua, mutta miten se onnistuu SDL:lällä?

Metabolix [20.03.2005 20:02:23]

#

Mitä tarkoitat, "tarvitaan melkein joka pikseli niihin"? Selitäpä nyt ensin ideasi oikein juurta jaksain, niin auttaminen helpottuu ihmeesti.

Megant92 [20.03.2005 20:06:53]

#

Selitin väärin.

Niin tarvitsisin vaikka sitä mustavalko-kuvaa, mutta tietyt kuvat toistuvat varsin epä-loogisissa paikoissa.Eli tilejä mustavalko-kuvien kanssa.

Mazuli [20.03.2005 20:56:11]

#

yksinkertaisinta olisi varmaan toteuttaa juuri tuolla mustavalkokuvalla. eli tarksitat onko esim. ukon alla oleva pixeli valkoinen, jos on niin ei liikuta alaspain, jos se on musta niin liikutaan alaspäin. Pixelin lukemiseen löytyy valmis functio SDL:n sivulta. Toisaalta pixelien käsitteleminen on melko hidasta. Voisit tietenkin lukea tason int-taulukkoon kenttää ladattaessa. Eli luet samalla tavalla jokaisen pixelin mustavalkokuvasta ja katsot onko se valkoinen vai musta, sitten merkkaat tiedon taulukkoon. En tiedä on tämä kovin hyvä tapa sillä en ole kokeillut.(En tiedä onko hyvä tehdä esim. 16 000 * 600 kokoinen taulukko :P, vai onko se edes mahdollista)

Metabolix [21.03.2005 20:56:56]

#

No ainakaan ei kannata tehdä siitä int-taulukkoa, kun käyttää vain kahta numeroa. Mieluummin char. Myöskään niin iso taulukko ei välttämättä synny itsestään normaalilla taulukkomäärittelyllä, vaan se pitää luoda itse.

Zeraf [22.03.2005 03:32:20]

#

http://sol.planet-d.net/gp/ch04.html tuolta saattais löytyä sulle apua ongelman ratkasemiseen

tejeez [22.03.2005 07:32:05]

#

No niitä pikseleitäkin voi kyllä suoraan käsitellä niinku taulukkoa joka on varmaan paljon nopeampaa kuin joku getpixel-viritelmä.
surfacennimi->pixels on pointteri niiden pikseleiden alkuun.

Mazuli [26.03.2005 10:29:57]

#

tietysti voisit tarkistaa alpha-kanavan kautta onko pixeli seinää vai ei.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta