Eli olen tekemässä merkkipohjaista seikkailupeliä QB:llä. Nyt on valmiina liikkuminen ja esteen tarkistus.
Ongelmana on se, että kun tarkistan esteen, niin ukko jää liian kauas esteestä, jopa n. 2cm päähän. Jos lähestyn estettä sivuilta, niin ukkeli menee ihan esteen viereen, mutta jos tulen ylhäältä, niin ukko jää juuri tuon 2cm päähän.
Esteen tarkistus näyttää tältä:
IF ux = estex + 1 AND uy = estey THEN ux = ux + 1 IF ux = estex - 1 AND uy = estey THEN ux = ux - 1 IF ux = estex AND uy = estey - 1 THEN uy = uy - 1 IF ux = estex AND uy = estey + 1 THEN uy = uy + 1
Ja esteenä käytetään O:ta (O)
este ohjataan paikalleen näin:
LOCATE estey, estex: PRINT "O"
eli miten ukkelin saisi (jos tullaan ylhäältä tai alhaalta) tulemaan lähemmäs estettä?
Tuossa koodissa ei näy päätä eikä häntää. Jos edessä on este, siirryt siitä taaksepäin? Tuo tarkistus suoritetaan ennen liikkumista, ja jos edessä on este, ei tehdä mitään, siis jätetään liikkumatta.
En oikein ymmärtänyt tuota senttimetri-selostusta. Eihän näytöllä mitään mitata senttimetreinä vaan merkkipohjaisessa pelissä merkkeinä, eli mikä tuossa nyt siis ongelma?
Siis se on ongelma, että kun liikutan ukkelia estettä päin, niin ukkeli ei mene esteeseen kiinni, vaan jää siitä kauemmaksi.
Niin siinä vaan käy. Minäkin tein sellaisen pikkupelin, jossa ukko lentää matolla. No se ikäänkuin levitoi sen päällä. Jos todella haluaisit ukon esteeseen kiinni, este jäisi ukon päälle. Sinun muuttujillasi näin.
ux = estex yx = estey
Tarkoitti ilmeisesti tätä, mutta pystysuunnassa:
Näin: ......... ..X...O.. ......... Ei näin: ......... ..XO..... .........
Heh! nyt sain toimimaan; melkein :D
Nyt ukkeli menee ylhäältä ja sivuilta tarpeeksi lähelle, mutta alhaalta ei toimi :D
vaikka kaikki onkin samalla periaatteella :DDDDDD
Eli tässä vielä selventävä kaavio:
O = este X = ukko ...x... ..xox.. ....... ...x...
eli nyt käy noin :D
uy = estey + 1
Eikö tuolleen onnistu?
:D
:D
:D
Vois muuten :D vähentää näiden ":D" -hymiöiden käyttöä. :DDDD
Tee vain niin kuin Metabolix sanoi, että kun käyttäjä painaa johonkin suuntaa, tutkit ruutua johon pitäisi liikkua. Jos ruutu on este, niin sitten ei tehdä mitään. Muussa tapauksessa liikutaan kyseiseen ruutuun.
Esimerkki ylöspäin liikuttaessa
if käyttäjä_painaa_ylös then 'Jos käyttäjä painaa ylös if estey <> uy - 1 then 'Jos yläpuolella olevassa ruudussa ei ole estettä uy = uy - 1 'liikutaan siihen end if end if
Muut suunnat saat rustata itse, jotta varmasti ymmärrät idean.
Edit: Tyylivirhe
Joo, sain toimimaan. Kiitti
Aihe on jo aika vanha, joten et voi enää vastata siihen.