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!
Mikä kieli
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
Aihe on jo aika vanha, joten et voi enää vastata siihen.