Mikä rakenne on tetris pelissä? Miten se on toteutettu?
Onko kentä taulukko? Entäs ne putoavat palikat?
En halua koodia, vaan idean.
Myös kiinnostaisi tuo matopeli, miten se on toteutettu, mistä se tietää milloin se törmää vaikka omaan häntään?
Onko kentä myös taulukko? Aika vaikea on silloin tuo liikkumisalgoritmi...
Onko kentä taulukko? Entäs ne putoavat palikat?
En halua koodia, vaan idean.
Myös kiinnostaisi tuo matopeli, miten se on toteutettu, mistä se tietää milloin se törmää vaikka omaan häntään?
Onko kentä myös taulukko? Aika vaikea on silloin tuo liikkumisalgoritmi...
Vastaukset 11
Vanhimmat
Itse käytin 2-ulotteisia talukoita kun väsäin tetriksen ja matopelin. Sijoitin taulukkoon kokonaislukuarvoja kuvaamaan, mitä kyseisessä kohdassa ruutua on. 0 tyhjää, 1 mato/palikka, 2 seinä jne
Liikkeen toteutin niin, että kaikki likkeenmuutokset ja törmäystestit tehdään aina taulukossa. Kun kaikki on tutkittu, piirretään taulukko ruutuun.
Tetriksessä toteutin myös palikat taulukkoina. Taas kuvasin värejä kokonaisluvuilla siten, että 0=tyhjä eli läpinäkyvä. Kun palikan törmäystä tutkii, niin tsekataan palikan liikutuksen jälkeen, onko uuden paikan ei-tyhjien alla jo jotain.
Joskus toistakymmentä vuotta sitten, kun tekstipohjainen Tetris oli huippusuosittu, tein siitä oman version. Siinä palikoina tuli pelkästään sinisiä neliöitä. Oli hauska seurata missä vaiheessa pelaaja huomasi, että tässä on jotain mätää. Asiaan...
Kyllä, molemmat pelit on toteutettu taulukoiden avulla. Tetriksessä aluksi taulukon alkiot on arvoltaan esim "0". Kun palikkaa 'tiputetaan', eli siirretään riviä alemmas, sen varaamat taulukon alkiot saavat arvon, joka on palikan väri (esim.1=sininen). Tiputtamista jatketaan kunnes jonkin sarakkeen kohdalla tulee vastaan 'varattu' ruutu, eli sellainen jonka arvo erisuuri kuin "0". Sitten tutkitaan onko jokin rivi täysi nollasta poikkeavia arvoja, ja jos on, niin siirretään sen yläpuolella olevia rivejä pykälä alaemmas.
Matopelissä tuo liikkuminen on aika yksinkertainen homma. Madolla on aina joku suunta ja sen mukaan 'edessä' oleva ruutu eli taulukon alkio varataan madolle ja vastaavasti 'hännässä' viimeisenä oleva ruutu vapautetaan kentäksi. Jos 'edessä' oleva ruutu on matoa (tai reunaa), niin peli loppuu. Kun mato syö pillerin, niin seuraavilla n:llä keulan kasvatuksella häntää ei lyhennetä.
En tiedä saiko tuosta mitään tolkkua...
Tuo on oikeastaan aika hyvä idea varataan vaikka joku 400x400 kokoinen taulukko matopeliä varten. Parasta on siinä juuri se että tarttee olla vain yksi taulukko ja sitten annetaan ruualle, seinälle, madolle omat arvonsa jne. Itse tein matopelin aikaisemmin toisella tavalla mutta tuo tapa on kyllä ihan fiksu.
teit toisella tavalla tuon matopelin? Mielenkiintoista vain tietää.
Tuo tetris vaikuttaa aika vaikealta, koska ne palikat voivat pyöriä, onnistuks tuo ollenkaan yhdella taulukolla? Vai pitäks olla jokaiselle palikalle oma taulukko?
En nyt tarkkaan muista miten sen pelin tein, koodi kyllä on jossakin tallessa mutta käytin siinä useita eri taulukoita yhden sijaan. Tetristä en ole ennen tehnyt mutta luulen että se voisi olla helpointa että jokaiselle putoavalle palikalle tekee oman taulukon. Netistä kyllä löytyy koodeja joita voi tutkia, kannattaa etsiä googlella.
>'hännässä' viimeisenä oleva ruutu vapautetaan kentäksi.
Mistä tietää, mikä on seuraava häntäruutu ?
Linkitetty lista kaikista madon varaamista ruuduista?
Muuta en keksi :)
Itse toteutin madon hännän taulukolla. Varasin tarpeeksi pitkän (max. madon pituus) 2-ulotteisen taulukon, johon tallensin madon hännän koordinaatit. Lisäksi tarvitsin muuttujan pituudeta ja indeksin missä kohtaa mennään. Joka siirrolla madon pää tauluun ja viimeinen hännänpää pois. Toiminta oikeastaan suoraan jonosta (fifo).
Kun mato kasvaa, lisää jonoon sopiva pätkä ja mato venyy mukavasti.
Mato kulkee kiertobufferissa (tai joku sellanen). Oiskohan tää samantyyppinen mitä Punikki tarkoitti?
Vektorissa on madon koordinaatit:
(vektorin pittää olla tietysti yhtä pitkä, mitä kentässä on alkioita)
Alkutila:
0 1 2 3 4 ...9
--------------
H x N
N = 2 (nuppi)
L = 3 (pituus)
H = N 1-L= 0 (häntä)
Askel 1:
0 1 2 3 4 ...9
--------------
..H x N
N =1 = 3
L = 3
H = N 1-L = 1
nuppi yli -> kiertobufferi
Askel 8:
0 1 2 3 4 ..8 9
-----------------
N.............H x
N =1 = 10 -> N-=10 = 0
L = 3
H = N 1-L = -2 -> H =10 = 8
Taas yhtä sekavaa, toivottavasti joku sai selvää.
Tekisin sen jotenkin noin.
Minun matopelissä mato on olio joka koostuu madonPala olioista. Lähen liikuttamaan matoa sen hännästä ja siirrän viimeisen palan sitä edeltävän palan koordinaatteihin. Näin jatkan kunnes olen madon päässä joka taas saa oman paikkansa suunta muuttujan mukaan.
Tetris oli iso totuustaulu.