Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: QB: Antakaa vinkki

Wukkopi [14.10.2003 14:44:00]

#

Olen tekemässä matopeliä ja pitäisi jotenkin kummallisesti saada se häntä uudeksi pääksi, ettei mato vain kasvaisi kokoajan... Ja se ei ole ihan tavallinen matopeli vaan sellainen jossa mato kakki pökylöitä ja niitä pitäisi väistellä. Että Vinkkejä kiitos!

petrinm [14.10.2003 15:14:36]

#

Mikä kieli

Antti Laaksonen [14.10.2003 16:13:10]

#

Yksi keino on tallentaa madon palikat sopivan kokoiseen taulukkoon, ja siirtää kaikkia palikoita yhdellä eteenpäin taulukossa, kun mato liikkuu. Helppo toteuttaa, ja näytöltä täytyy joka kerralla ainoastaan poistaa häntä ja piirtää madon uusi pää.

Ymmärrettävästi esimerkkiohjelman kirjoittaminen tarkoittaa samalla melkein kokonaista matopeliä, mutta tässä mahdollisimman pieni ja puutteellinen koodinpätkä, jotta itsellesikin jää jotain tehtävää. :) (toivottavasti kielesi on QBasic, kun et sitä muistanut mainita...)

'taulukon koko on kentän pinta-ala (madon suurin mahdollinen pituus)
DIM mato(10 * 10, 1) AS INTEGER
DIM pituus AS INTEGER, suunta AS INTEGER
DIM i AS INTEGER, n AS STRING

'pituus palikkoina
pituus = 5
'suunta:
' 1 = vasemmalle
' 2 = ylös
' 3 = oikealle
' 4 = alas
suunta = 1
'aloituskoordinaatit (5, 5)
mato(1, 0) = 5
mato(1, 1) = 5

CLS

DO
   'pyyhitään madon viimeinen palikka (häntä) näytöltä
   LOCATE mato(pituus, 1) + 1, mato(pituus, 0) + 1: PRINT " "
   'siirretään kaikkia palikkoja yhden pykälän edemmäs
   FOR i = pituus TO 2 STEP -1
      mato(i, 0) = mato(i - 1, 0)
      mato(i, 1) = mato(i - 1, 1)
   NEXT
   'lasketaan uusi palikka (pää) madon suunnan mukaan
   mato(1, 0) = mato(2, 0)
   mato(1, 1) = mato(2, 1)
   IF suunta = 1 THEN mato(1, 0) = mato(1, 0) - 1
   IF suunta = 2 THEN mato(1, 1) = mato(1, 1) - 1
   IF suunta = 3 THEN mato(1, 0) = mato(1, 0) + 1
   IF suunta = 4 THEN mato(1, 1) = mato(1, 1) + 1
   'piirretään uusi palikka
   LOCATE mato(1, 1) + 1, mato(1, 0) + 1: PRINT CHR$(219)
   'tässä kohdassa käyttäjä voi päättää madon uuden suunnan nuolinäppäimillä
   DO
      n = INKEY$
      IF n = CHR$(0) + "K" THEN suunta = 1
      IF n = CHR$(0) + "H" THEN suunta = 2
      IF n = CHR$(0) + "M" THEN suunta = 3
      IF n = CHR$(0) + "P" THEN suunta = 4
   LOOP WHILE n = ""
LOOP

Vastaus

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

Tietoa sivustosta