[SFML] Snake podczas przemieszczania
Ostatnio zmodyfikowano 2014-11-14 17:15
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. |
|
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. |
|
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. |
|
« 1 » |