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ää.
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 :).
älä keksi pyörää uudelleen, osta (tai lainaa kirjastosta) kirja "Peliohjelmointi Inside"
Säästät hermot ja mikä tärkeintä paljon aikaa
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ä?
Mitä tarkoitat, "tarvitaan melkein joka pikseli niihin"? Selitäpä nyt ensin ideasi oikein juurta jaksain, niin auttaminen helpottuu ihmeesti.
Selitin väärin.
Niin tarvitsisin vaikka sitä mustavalko-kuvaa, mutta tietyt kuvat toistuvat varsin epä-loogisissa paikoissa.Eli tilejä mustavalko-kuvien kanssa.
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)
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.
http://sol.planet-d.net/gp/ch04.html tuolta saattais löytyä sulle apua ongelman ratkasemiseen
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.
tietysti voisit tarkistaa alpha-kanavan kautta onko pixeli seinää vai ei.
Aihe on jo aika vanha, joten et voi enää vastata siihen.