java snake ruch

0

Witam, mam problem z poprawną implementacją poruszania się snake w tablicy dwuwymiarowej, ruch snake polega na zamiane wartościami w tablicy, problem mam gdy długość węża jest większa niż 1, wtedy nie występuje poprawna zamiana wartościami w tablicy, cały wąż przesuwa się w górę lub dół lub też w lewo się przesuwa wydłużając się. To jest link do repozytorium na gicie z moim programem: https://github.com/marcinkk/projekty_java/tree/master/JavaSnakeSwing
Snake w tej chwili jeszcze nie porusza się sam czyli z użyciem wątków tylko każdy ruch to jedno kliknięcie strzałkami.
Pozdrawiam i proszę o uwagi i sugestie dotyczące programu.

2

Powinieneś zapisywać gdzieś w pamięci wszystkie segmenty snake'a. Wtedy masz ułatwioną sprawę: usuwasz ostatni segment z listy i dodajesz kolejny segment na początku listy. Łatwo też możesz sprawdzać kolizje z samym sobą, ścianą, jedzeniem itd.
Nawet nie ma sensu zapisywać mapy jako tablicy.

A w programie, który trzymasz całkiem dobrze, nadużywasz niestety zmiennych statycznych. Powinieneś utworzyć pierw snake'a i przekazać go do klasy rysującej.

0

przepraszam że nadal upieram się przy tych tablicach?? jak zrobić żeby każda część ciała nie poruszała się w tym samym kierunku co głowa?? przykładowo że jak głowa porusza się w górę to reszta części ciała węża porusza się w tym samym kierunku.

umiem napisać żeby gdy poruszam się w lewo ostatni element przechodził na początek i był głową. myślę że z poruszaniem w prawo również sobie poradzę, ale to wszytko tylko wtedy gdy wąż jest w jednej linii.

0

stwórz sobie typ wyliczeniowy enum na jego liście umieść stałe: LEWO,PRAWO,GORA,DOL Później jak będziesz chciał zmienić kierunek ruchu węża to przyposujesz odpowiednie stałe z listy wyliczeniowej np jak naciśniejsz strzałkę w lewo do przypisujesz do zmiennej enum stałą LEWO. Później gdzieś we funkcji odpowiadającej za ruch węża musisz sprawdzać która stała jest przypisana do tego typu wyliczeniowego i w odpowiednią stronę dodawać głowę i usuwać tylni człon. Zrób tak jak @Visher mówi bo to jest chyba najprostszy sposób na napisanie snake

0

Snake proste :) sam ostatnio pisałem dla sprawdzenia czy jako tako to wyjdzie i robiłem to na arrayliscie, można jeszcze kolejke i kilka tablic dać ale po co kombinować, musisz mieć listy przechowujące x i y głowy i przekazywane są one po skręcie na następne pozycje i koniec magii; magią jest to jak sobie wyczarujesz automatyczne przesuwanie, ja u siebie robiłem na wątkach ale można też na przerwaniu. Kierunki robisz albo na bool albo int, jak będzie ci wygodniej w if użyć. Reszte typu powiększanie o 1 i lokowanie pokarmu można się domyślić że łatwe do zrobienia.

0

a jakieś uwagi odnośnie kodu który mam na githubie a link wkleiłem w pierwszym poście??

1 użytkowników online, w tym zalogowanych: 0, gości: 1