Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: Miten saada tausta seuraamaan pelaajaa?

Sivun loppuun

tuomas [17.01.2004 13:47:33]

#

Tietääkö kukaan mitään hyvää tapaa jolla saada tausta "seuraamaan" pelaajaa?
Eli jos kuvan koko olisi 400 x 800 ja formin koko olisi 400.

sooda [17.01.2004 13:55:44]

#

kerros vähän tarkemmin: onko kaikki eri pictureboxeissa vai kaikki samassa vai spriteä vai miten ne piirretään?

tuomas [17.01.2004 13:58:20]

#

Pelaaja on yhdessä picture boxissa,tausta yhdessä ja esteet joista ei saisi päästä läpi ovat myös kaikki omissa pictureboxeissaan.

sooda [17.01.2004 14:01:35]

#

kun liikutaan niin liikkuuko tausta vai ukko?

tuomas [17.01.2004 14:05:21]

#

ukko

sooda [17.01.2004 14:08:24]

#

ja sitte ku se menee sinne reunaan niin mitä pitäis tapahtua? siis senhän sais sillee että kun ollaan formin reunassa niin picturebox liikkuu vähän toiseen suuntaan.

tuomas [17.01.2004 14:11:36]

#

kokeilin jo sitä mutta niiden esteiden kanssa tuli sit ongelmia.
Ne eivät pysyneet oikella paikoilla.

sooda [17.01.2004 14:13:06]

#

siirrä nekin.

tuomas [17.01.2004 14:20:42]

#

Kokeilin sitäkin mutta kun ei toiminu...

sooda [17.01.2004 14:25:09]

#

mitenniin muka? kyllä sen pitäisi. mikä bugaa?

tuomas [17.01.2004 14:25:57]

#

en tiedä...

hunajavohveli [17.01.2004 16:50:20]

#

Heh, kahden hengen keskustelua repliikki kerrallaan... :)
Tuolla menolla jatkatte vielä ensi vuonnakin. Elikkä siis, yritätkö sanoa, että joka ikinen ruutu on oma pictureboksinsa? Vai onko tämä edes sellainen tile*tile-peli? Ja mikä on tämä "tausta"? Ei sellaista pitäisi olla.

hunajavohveli [17.01.2004 16:52:09]

#

Kelasin vähän tuota keskustelua ja tajusin juuri, mitä olet tehnyt. Voin sanoa, että tuolla keinolla ei peliä synny. Esteet pitää pistää matriiseihin, ei niitä voi määritellä yksi kerrallaan picturebokseihin. Vilautas vähän koodia niin varmistetaan olinko oikeassa.

remontti-reiska [17.01.2004 16:55:37]

#

Mitä yrität sanoa tuomas? Eli kun ukko liikkuu toiseen suuntaan niin tausta kulkee toiseen suuntaan ja esteet samalla nopeudella samaan suntaan.

tausta.left = tausta.left -10
este.left = este.left -10
ukko.left = ukko.left + 10

Ja sitten tota voi muutella parhaansa mukaan. Tuossa noille tota koodia. En oikeastaan tuollaista suosittele.

hunajavohveli [18.01.2004 11:11:46]

#

Ei voi käyttää mitään este-objecktia, sillä esteitähän on useampikin. Pitäisi olla este1, este2, este3, este4 jne.
Pitää pistää taulukoihin.

tuomas [19.01.2004 15:18:10]

#

Miten se mahtaa onnistua?
En ole koskaan laittanut mitään taulukoihin.

bob [19.01.2004 16:47:41]

#

helevettiin kaikki pictureboxit niin saattaa jopa onnistua
muuten tulee _todellista_ paskaa

hunajavohveli [19.01.2004 20:02:41]

#

lainaus:

helevettiin kaikki pictureboxit niin saattaa jopa onnistua
muuten tulee _todellista_ paskaa

Juuri noin se on, mutta taas kerran kohteliaisuus kunniaan: Ei karhukaan... ;)

Taulukoista löytynee (vai löytyykö?) putkasta jokin opas. Ja ilman taulukoita ei yksikään kunnon peli voi toimia, joten ne kannattaa opetella heti kättelyssä.

killerfox [20.01.2004 17:58:59]

#

lainaus:

Taulukot

Vähänkin laajemmissa ohjelmissa taulukot ovat hyvin tärkeitä. Otetaanpa esimerkiksi ristinollapelin toteutus. Jos jokaisen ruudun tila olisi omassa muuttujassaan, näyttäisi pelkkä muuttujien määrittely tämän kaltaiselta:

Dim Ruutu1 As Boolean
Dim Ruutu2 As Boolean
Dim Ruutu3 As Boolean
'...
Dim Ruutu9 As Boolean

Taulukon avulla kaikki muuttujat saadaan yhteen ja määrittelykin mahtuu yhdelle riville:

Dim Ruudukko(1 To 9) As Boolean

Nyt taulukko sisältää yhdeksän alkiota, joista kuhunkin voidaan viitata erikseen. Esimerkiksi kuudennen ruudun tila löytyy muuttujasta Ruudukko(6).

Taulukon määrittely

Taulukot määritetään aivan kuin muuttujat, paitsi että nimen perään tulee sulkeisiin taulukon rajat. Jos taulukkoon ei määritetä alarajaa, taulukon alkiot alkavat nollasta. Seuraavat määrittelyt tarkoittavat siis samaa:

Dim Tiedot(15) As Integer
Dim Tiedot(0 To 15) As Integer

Taulukolla voi olla monta ulottuvuutta. Ulottuvuudet erotetaan määrittelyssä pilkulla. Esimerkiksi edellämainitussa ristinollapelissä voisi olla järkevämpää käyttää kaksiulotteista taulukkoa:

Dim Ruudukko(1 To 3, 1 To 3) As Boolean

Tällöin ylävasemman ruudun tila löytyy muuttujasta Ruudukko(1, 1), keskimmäisen muuttujasta Ruudukko(2, 2) ja alaoikean muuttujasta (3, 3). Taulukolla voi olla jopa 60 ulottuvuutta, mikä on varmasti enemmän kuin tarpeeksi.

Dynaamiset taulukot

Aina taulukkoa määritellessä ei tiedetä, kuinka monta alkiota tarvitaan. Tällöin voidaan käyttää dynaamista taulukkoa, joka määritetään muuten samalla tavalla kuin tavallinen, paitsi että rajat jätetään pois, esimerkiksi:

Dim Numerot() As Long

Sitten kun taulukon ylärajat halutaan määrittää, käytetään funktiota ReDim seuraavaan tapaan:

ReDim Numerot(1 To Maara)

ReDim-määrittelyyn ei siis tule laittaa taulukon tyyppiä, vaan se pysyy Dim-lauseessa määriteltynä. Aina kun taulukon rajat määritetään uudestaan, taulukko tyhjennetään.

Ote laaksosen tekemästä oppaasta:
https://www.ohjelmointiputka.net/oppaat/opas.php?tunnus=vbo_2


Sivun alkuun

Vastaus

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

Tietoa sivustosta