Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[SFML] Snake podczas przemieszczania

Ostatnio zmodyfikowano 2014-11-14 17:15
Autor Wiadomość
Nazerin
Temat założony przez niniejszego użytkownika
[SFML] Snake podczas przemieszczania
» 2014-11-11 14:20:59
Piszę grę "Snake", rozwiązałem większość problemów z systemem punktowania, mapą, menu etc. Jednak została jedna rzecz, która nie daje mi spać, to jest ruch węża po "urośnięciu". Długo nad tym myślałem i nie wiem jak to rozwiązać, aby poszczególne "segmenty" węża podążały za głową. Moglibyście pomóc z rozwiązaniem tego zagadnienia? Miałem kilka koncepcji na rozwiązanie tego pomysłu, lecz nie zbyt działały.

Myślałem nad ruchem skokowym tj. wąż porusza się 20 jednostek co 0.5s.  Z uzyciem GetTickCount().
if(GetTickCount()% 500==0)

 Jednak, instrukcja wykonuje się wielokrotnie, ponieważ obieg głównej pętli trwa ułamki milisekund.

Zaś przy ruchu płynnym, nie wiem jak zrobić by poszczególne cząstki poruszały się przy skręcie za głową, a nie razem z nią.

Dodam, głowa snake'a jest spritem, przy zebraniu jabłka jest dodawany kolejny sprite(segment) na koniec węża. Sprite są kwadratami o wymiarze 20x20.
P-120366
bingo009
» 2014-11-12 00:09:30
Może pozycje każdego "kawałka" węża przechowuj w kontenerze vector i podczas ruchu za pomocą petli for przesuń każdy w określonym kierunku i określoną długość? Żadne prostsze rozwiązanie mi nie przychodzi do głowy.
P-120410
Chlorek
» 2014-11-14 17:15:06
Ja sobie raz pisałem snake'a w Java'ie ale metoda może być taka sama. Mianowicie miałem dynamicznej wielkości container (w C++ najlepiej użyć std::vector) w którym znajdowały się kawałki węża, każdy miał swoją pozycję. Co powiedzmy 1 sekundę przemieszczałem węża w wybranym kierunku przez dodanie nowego elementu węża (z odpowiednią pozycją) do listy, natomiast ostatni obiekt był wyrzucany. Dzięki temu nie powinno być też problemu z premiami na rozciąganie - wówczas można w miejscu zebrania dodać kilka elementów węża i idąc dalej rozciągnie się bez problemu.
P-120590
« 1 »
  Strona 1 z 1