otsikko selittää kaiken mutta tässä se koodi:
DIM x AS INTEGER, UX AS INTEGER DIM y AS INTEGER, UY AS INTEGER x = 5: y = 5: UX = x: UY = y SCREEN 10 CLS LOCATE x, y: DO button$ = INKEY$ IF button$ = "w" THEN UX = UX - 1 IF button$ = "s" THEN UX = UX + 1 IF button$ = "a" THEN UY = UY - 1 IF button$ = "d" THEN UY = UY + 1 IF button$ = "q" THEN END PRINT "@" IF UX <> x OR UY <> y THEN LOCATE x, y: PRINT "" LOCATE UX, UY: PRINT "" LOCATE UX, UY: PRINT "@" x = UX: y = UY END IF LOOP
että kertoisko joku?
Mod. edit: kooditagit
Tarkistamalla (If-lauseella), meneekö ukko ruudun rajojen ylitse – jos menee, niin sitten ei liikuteta.
Törmäystarkistus toteutataan samalla tavalla – ruudun rajojen sijasta vaan tarkistellaan esteiden rajoja.
Ennen kuin piirrät näyttöön mitään, niin tarkistat, että "pelaaja" on sallitulla alueella(ja ei ole ruudun ulkopuolella). Jos "pelaaja" ei ole sallitulla alueella, palautetaan vahat koordinaatit, eikä piirretä mitään(näin tuossa koodissasi).
edit: buah, ja Blaze ehti sitten ensin :\
jaa..jaa
voisko vielä yhtään tarkempaa
Eli sinun pitää tarkistaa, että UX ja UY ovat rajojen sisällä, ennen kuin piirrät pelihahmon uuteen kohtaan. IF-lause, jossa on neljä ehtoa, kelpaa tähän tarkoitukseen.
Eli laitetaan nyt ihan yskinkertainen esimerkki:
dim ux as integer, uy as integer, kenttax as integer, kenttay as integer, kenttax as integer kenttay=50 'kentän korkeus kenttax=60 äkentän leveys 'tarkistetaan onko kentalla if ux>0 and uy>0 and ux<kenttax and uy<kenttay then LiikutaHahmoa() end if
Aihe on jo aika vanha, joten et voi enää vastata siihen.