C# Snake játék mátrixxal

C# Snake játék mátrixxal
2019-03-24T02:22:44+01:00
2019-03-24T19:45:50+01:00
2022-08-11T11:10:31+02:00
Levente Váczi
Üdv!
Az lenne a problémám, hogy egy Snake játékot szeretnék csinálni 2 dimenziós tömbben, de nem sikerül megoldani a mozgást. Az ötletem az lenne hogy X és Y koordinátákkal eltárolom a fejét és a kígyó végét, a fejét adott irányba mozgatom és a kígyó testének a végét törlöm, és a teste akkor utolsó előtti eleme lenne az új vége, a színezésre van külön függvényem, azt úgy szeretném megoldani, hogy a testének a mátrixban van külön értéke, ami alapján színez. Valami ilyesmire gondoltam, remélem érthető. Addig jutok el mindig, hogy húzza maga után a csíkot (testet), de ez nem olyan vészes dolog. Akárhogy is csűröm csavarom a dolgot, nem tudok rájönni. Tudnátok segíteni?
Mutasd a teljes hozzászólást!

  • Én nem igazán értem mit akarsz kérdezni.
    De amennyire én ismerem a snake játékot, két lehetőséged van:
    -A kígyó minden pontját mented, és mozgáskor updateled mindet.
    -A kígyó alakját körülírod valami megoldással és azt updateled. (egyenes vonalakra bontod pl.)

    Az elsőt könnyebb megoldani, de memóriaigényesebb. Nem mintha sokat számítana egy snake játéknál.
    Mutasd a teljes hozzászólást!
  • Elnézést, ha nem érthető. 
    Igen így szeretném csinálni, hogy a kígyó minden pontját mentem, és aztán updatelem.
    Az nem megy, hogy hogyan kéne updatelni.
    Mutasd a teljes hozzászólást!
  • Színátmenetes kígyót akarsz, ahol a feje mondjuk zöld, a farka meg kék (csak példák)? Ez esetben a színeket egyszerűen a tömbindexből kéne képezned. Megvan a tömb hossza (ez akkor is mindig rendelkezésre áll, ha a kígyó nőhet), és annyi lépésben kell eljutni az egyik színből a másikba.
    Mutasd a teljes hozzászólást!
  • Szia!

    Azt, hogy mivel akadtál el, nem világos, legalább is én nem egészen értem.
    Én úgy gondolkodnék, hogy a kígyó minden egyes elemét egy rekord tárolná, ami meghatározza a mátrixon belül a pozícióját (X, Y koordináta), esetleg az elem színét, egyéb tulajdonságait. A teljes kígyót egy logikai "pipe" (cső) tárolja. A "pipe"-ra az a jellemző, hogy amit az egyik végén először rakunk bele, azt kapjuk előszörre vissza (FIFO). Ha a kígyó maximális mérete fix érték (nyilván a mátrix eleminek a számánál nem lehet hosszabb), akkor a "pipe" lehet egy egydimenziós tömb, amiben a kígyót tárolod, valamint lenne mellé néhány változó: a kígyó utolsó elemének az indexe, a kígyó első elemének az indexe, ez alapján meghatározható minden elem (ha az utolsó elem indexe kisebb az elsőnél, akkor a kettő közötti elemek a kígyó, míg ha a farok később van, mint a fej, akkor a kígyó a faroktól a tömb végéig, majd a tömb elejétől a fej indexéig tart).

    Gábor
    Mutasd a teljes hozzászólást!
abcd