eli siis.. jos haluan piirtää kartan tolla tavalla miten esim. tuossa jalokivijahdissa se tehdään, ja sitten haluaisin hahmon liikkuvan siinä kartalla tuon BitBlt:n avulla, niin miten se itseasiassa onnistuisi? Koska tuo BitBlthän menee niin että tausta piirretään aluksi tuohon puskuriin ja siitä sitten siihen oikeaan kuvaan(eikö?). Ja tuolla jalokivijahdin esim. kartan piirrolla kartta piirretään paloista, niin piirretäänkö ne palat aluksi sitten siihen puskuriin ja siitä sitten oikeaan kuvaan? Ja meneekö se niin vähän hankalaksi, sillä jos kartta on erittäin iso, ja siitä näytetään aina vain pieni osa ja kuva liikkuu hahmon mukana, niin sittenhän pitäisi sen puskurin kuva muuttaa aina kun hahmo liikkuu kartalla sen verran että näytetään uusia alueita =/... ... vai olisiko tähän jokin muu tapa ? (kyseessä siis vb)
CoDeR kirjoitti:
eli siis.. jos haluan piirtää kartan tolla tavalla miten esim. tuossa jalokivijahdissa se tehdään, ja sitten haluaisin hahmon liikkuvan siinä kartalla tuon BitBlt:n avulla, niin miten se itseasiassa onnistuisi?
No eikös se siitä Jalokivijahdin koodista selviä? o_O
CoDeR kirjoitti:
Koska tuo BitBlthän menee niin että tausta piirretään aluksi tuohon puskuriin ja siitä sitten siihen oikeaan kuvaan(eikö?).
Eikä mene. Suoraan ruudulle siinä piirretään.
CoDeR kirjoitti:
Ja tuolla jalokivijahdin esim. kartan piirrolla kartta piirretään paloista, niin piirretäänkö ne palat aluksi sitten siihen puskuriin ja siitä sitten oikeaan kuvaan?
No kyllähän sen niinkin *voi* tehdä, mutta tässä tapauksessa ei tehdä.
CoDeR kirjoitti:
Ja meneekö se niin vähän hankalaksi, sillä jos kartta on erittäin iso, ja siitä näytetään aina vain pieni osa ja kuva liikkuu hahmon mukana, niin sittenhän pitäisi sen puskurin kuva muuttaa aina kun hahmo liikkuu kartalla sen verran että näytetään uusia alueita =/
Voithan sinä koostaa sinne puskuriin sen koko kartan niistä palikoista, vaikka se oiski itse viewporttia isompi ja aina leikata siitä sitten vaan sen viewportin kokoisen palan itse ruudulle piirrettäväksi.
Näin lonkalta voisin kuitenkin arvella, että tuollainen puskuri on turha, ainakin, jos kartalla tapahtuu jotain animaatiota. Tällöin joutuisit aina piirtämään uusiksi sen ison kartan puskurissa sen pienen ruudulla näkyvän sijaan.
Eli tuossa:https://www.ohjelmointiputka.net/oppaat/opas.
se tausta/maasto piirretään suoraan siihen oikeaan pictureboxiin (pKuva) ...... joten sittenhän sen pitäisi toimia niin että piirrän vaan sen kartan siihen boxiin palikoista, ja sitten vaan liikuttulen sitä hahmoa siinä kartan päällä sen kaksoispuskuroinnin avulla (niitten maskijen, spritejen ja muiden avulla) ihan normaalisti ?? ja sitten kun pitää karttan näkyvää osaa siirtää hahmon mukana, niin tehdään se vaan siinä pKuva boxissa ihan tavallisesti ?
.... vai oonko (taas) ihan hakoteillä? ><
https://www.ohjelmointiputka.net/koodivinkit/
Kokeiles tuota esimerkkiä, onko siitä apua?
Itse tekisin niin että tile mappi piirretään muistiin valmiiksi (siis passiivinen osa, eli kaikki se mikä ei muutu pelin aikana.) Ja sitten joko suoraan ruudulle blitataan tämä passiivinen osa ja sen "päälle" kaikki aktiiviset osat eli ukot, vihut ym. animoitavat osat, tai sitten tämäkin tehdään vielä muistiin (eri kuvaan) joka sit blitataan kokonaisuutena ruudulle.
Jos nyt osasin tämän ymmärrettävästi selittää.
Tästä pitäisi tehdä kyllä koodivinkki. Ei vaan jaksais.
ymmärrän tästä jonkin verran... mutta jos joku voisi tehdä pienen esimerkin tästä. Esim. piirretään pieni kartta paloista, ja siinä liikutellaan hahmoa päällä tuon kaksoispuskuroinnin(BitBlt:n) avulla esim niin että hahmon jalat liikkuvat liikkuessa (tai ilman tätä). Olisin todella kiitollinen jos joku osaisi tässä auttaa, koska haluas todella oppia tämän asian! :)
Harmi, mulla oli jo valmis ohjelma, mutta kun en saanut ukkoa liikkeelle!
Koodi on tuossa:
Private Sub piirratile(x As Long, y As Long, tile As Long, lahdekuva As Long) BitBlt picPelikentta.hDC, x * 32, y * 32, 32, 32, lahdekuva, tile * 32, 0, vbSrcCopy End Sub
x ja y arvot pysyvät mapin indexin rajoissa, tileksi välitetään oikea arvo, ukon koordinaatit muuttuvat ihan ok, lahdekuvan osoitteksi välitetään picUkko.hDC, kaikkien ikkunoiden autoredraw = true, scalemode = vbpixels ja myöskin keypreview on päällä. Nuihin lähdekuviin ladataan ihan onnistuneesti tuo ukon kuva,
ja se piirretään ensimmäisen kerran ihan oikein annettuihin koordinaatteihin, mutta sen jälkeen ei liiku mihinkään.
Sorsa tuosta: http://www.geocities.com/bigenergized/Bitblt.zip
Yritin tehdä Coderille mahdollisimman yksinkertaisen mutta kun en saanut tuota toimimaan. Mikähän siinä mahtaa olla vialla?
Saisiko mistään kaiken kattavaa suomenkielistä Bitblt opasta VB.Net:ille?
Joko Googletit?
joo, toi piirtää ton kentän ihan hyvin mutta ei se ukko liiku =(. On täs vähä kiireitä mut pitää kattoo tota ajan kanssa, ja kiitos jo etukäteen!
Aihe on jo aika vanha, joten et voi enää vastata siihen.