voisiko joku heittää hiukan teoriaa miten tehdä semmoinen matopeli jossa voisi kääntyille ei siis semmoinen neliömöinen käkkärämömmö vaan semmonen taktinen te tiedätte kyllä
Jollain sinillä ja cosinilla joudut kaiketi laskemaan montako pikseliä mato liikkuu minnekin päin... Pidä muistissa asteluku, muuta sitä jos nuolia pidetään pohjassa jne... Graafinen toteutus itseäni lähinnä huolestuttaisi.
Voin joku päivä tehdä sellaisen ja kertoa sitten :D
Mitä kieltä käytät?
öö, graafisessa ei tuskin mitään vaikeuksia ja olen miettinyt noita kulmia jonkinverran, että luulen osaavani. Ongelmat ovat: madon liikkuminen (miten pidän muistissa missä se on) ja törmäystarkistus
niin ja kieli on C++ ja käytän SDL kirjastoja
Ratkaisuni ovat outoja, joten älä pelästy jos et ymmärrä... :D
Madon sijainniksi voi laittaa ihan vaan koordinaatit, joissa sen pää on, tallentaa ne joka hetki ja laittaa madon toisen pään kulkemaan samaa reittiä sopivalla viiveellä.
Itse tykkään Windowsin messageista niin paljon, että voisi tallentaa kaikki WM_KEYDOWNit ja lähettää jonkin ajan päästä WM_USER-viestin jonka wParam olisi se aiempi viesti ja laittaa ne kääntämään madon peräpään kulkua samalla lailla. Tässä siis madon toinen pää olisi pyyhekumina.
Törmäyksen voisi tehdä graafisella puolella: katsotaan ne pikselit, jotka mato seuraavaksi peittäisi, jos jokun niistä on madon värinen (tai erivärinen kuin tausta), mato törmää.
nojaa, enköhän keksi ihan itse parempia ideoita. muutenkin tämän tulee vain linuxille :)
Mitä?!? Haukutsämunideoita?! Kohta mä teen sen matopelin, sit katotaan kuka saa "parempia ideoita" :P. Mun tetris-kloonini toimii (menee kyllä alhaalta ylös päin) ja siinä on suunnilleen yhtä outo toteutus... palikka on Boolean-taulukko. :P
BlueByte kirjoitti:
Ongelmat ovat: madon liikkuminen (miten pidän muistissa missä se on) ja törmäystarkistus
Madon osien paikat voi tallentaa ihan tavalliseen taulukkoon, jonka koko on madon maksimipituus. Joka kerta taulukkoon lisätään uusi paikka ja viimeinen otetaan pois. Kannattaa kuitenkin tehdä niin, että lisäys- ja poistokohta on liikkuva, jotta kaikkia taulukon alkioita ei tarvitse aina siirrellä.
Törmäystarkistus tosiaan onnistuu hyvin kuvasta katsomalla. Jos se ei ole mahdollista, niin sitten pitää käydä kaikkien madon osien paikat läpi.
Juu, no eiköhän tästä ollut jo tarpeeksi apua. Kiitos.
https://www.ohjelmointiputka.net/keskustelu/5496-gdiworm
Olisiko tuosta apua?
Nimenomaan tuollaista hän käsittääkseni EI halunnut tehdä.
Njoh, pidä muistissa madon kääntymisaste(0-360) ja nopeus, ja sitten aina kun matoa siirretään niin siirrät sitä yksinkertaisesti
madon_x += nopeus * cos(kääntymisaste * pi / 180) madon_y += nopeus * sin(kääntymisaste * pi / 180)
Aihe on jo aika vanha, joten et voi enää vastata siihen.