Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: QB: What is the matopeli

Sivun loppuun

Dj-Snake [10.07.2005 15:34:20]

#

Eli jos joku viittis kertoo miten matopeli tehdään.
en tarkota valmista koodia vaan miten toteutetaan yksin kertanen matopeli.
Olen kattonu QB matopelin koodia mutta en oikee ymmärrä sitä.
niinku esim. madon pituuden määrittäminen ja tollasta.
Kiitos.

Heikki [10.07.2005 16:51:59]

#

Ensin kannattaa lukea peliohjelmoinnista yleensä esim. putkan oppaasta, jossa kerrotaan mm. pääsilmukasta.

Madon tallentamiseen yksinkertainen keino on tallentaa kaikkien madon "osien" koordinaatit taulukkoon ja madon liikkuessa siirtää niitä "eteenpäin". Madon pituus voi ihan hyvin olla yhdessä Integer-muuttujassa.

Hankala neuvoa näin yleisesti, mutta aloita nyt tekemällä pääsilmukka johon toteutat madon piirron taulukon tietojen perusteella ja lueskelet syötettä näppäimistöltä. Jos tulee hieman yksityiskohtaisempia pulmia niin niihin on helpompi vastata. Ja parhaiten opit ohjelmointia miettimällä ongelmia itse ja keksimällä siten ratkaisun.

Dj-Snake [11.07.2005 12:58:53]

#

Tuo autto jo vähä eteen päin. Kiitos

Antti Laaksonen [11.07.2005 16:53:42]

#

Varmaankin vaikein juttu matopelin tekemisessä on madon osien koordinaattien tallentaminen. Taulukon kohtien numerointi kannattaa suunnitella taiten niin, että joka liikkeen jälkeen koko taulukko ei mene uusiksi. Tästä on hyötyä varsinkin hitailla tietokoneilla madon pituuden ollessa suuri.

Toteutus tapahtuu niin, että aluksi varataan niin suuri taulukko, että mato mahtuu siihen varmasti pisimmilläänkin. Sitten merkitään taulukkoon madon aloituskohtaa vastaavat osat. Tarvitaan kaksi lisämuuttujaa, joista toinen osoittaa taulukossa madon päähän ja toinen sen häntään. Liikkumisen yhteydessä molempia muuttujia siirretään samaan suuntaan. Pään kohdalle lisätään uudet koordinaatit ja hännän kohdalta poistetaan vanhat. Jos pää tai häntä menee taulukon rajojen yli, se siirtyy taulukon toiseen reunaan. Näin on syntynyt uusi tietorakenne nimeltä jono.

Madon liike taulukossa (numerot kuvastavat eri kohtia näytöllä):

-0--1--2--3--4--5--6-
[1][2][3][ ][ ][ ][ ]  pää = 2, häntä = 0
[ ][2][3][4][ ][ ][ ]  pää = 3, häntä = 1
[ ][ ][3][4][5][ ][ ]  pää = 4, häntä = 2
[ ][ ][ ][4][5][6][ ]  pää = 5, häntä = 3
[ ][ ][ ][ ][5][6][7]  pää = 6, häntä = 4
[8][ ][ ][ ][ ][6][7]  pää = 0, häntä = 5
[8][9][ ][ ][ ][ ][7]  pää = 1, häntä = 6

Meitsi [11.07.2005 18:13:53]

#

Jos haluaa toteuttaa sillä hitaammalla tavalla, tee taulu jossa on kaksi kohtaa.
pseudo:
matoOsa = (x,y)

matoTaulu(matoPituus) matoOsa

sit jokaseen matoTaulu.x ja y laitat madon kohtia ja sitten ku mato liikkuu, "työnnät" alkioita ja laitat ensimmäiseksi alkioksi uuden kohdan.

Dj-Snake [11.07.2005 21:01:19]

#

Ei kellää ois rautalankaa mukana?
Mä en ymmärtäny puoliakaan tuosta..
Kai mun pitää yrittää tehä vielä jotai
yksinkertasempaa ensin.

thefox [13.07.2005 15:43:19]

#

Rautalankaa on jo nyt syötetty sen verran paljon, että kannattanee tosiaan tehdä jotain yksinkertaisempaa ensin. Jos haluat selventää asiaa itsellesi, kynällä ja paperilla "simuloiminen" (vaihe vaiheelta) auttaa usein hahmottamaan, mistä on kyse.

msdos464 [17.07.2005 19:22:14]

#

itse toteutin matopelin siten, että on yksi a x b taulukko joka kuvaa pelikenttää, 0 on tyhjä kohta ja 1 on mato. Mato kuvataan 2 x n taulukolla jossa n on madon pituus, aina loopissa siirretään koordinaatteja "taaksepäin" ja laitetaan taulukon loppuun madon pään uusi koordinaatti.


Sivun alkuun

Vastaus

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

Tietoa sivustosta