• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Gra Snake - problem przy skręcie (Object C++)

Object Storage Arubacloud
0 głosów
172 wizyt
pytanie zadane 11 kwietnia 2017 w C i C++ przez ignacjusz Bywalec (2,390 p.)

Witam, kodując snake natrafiłem na problem. Zrobiłem klasę reprezentującą pojedynczy segment, klasę łączącą wszystkie segmenty w węża oraz klasę ustwiającą "punkty skrętu". Kiedy naciśniemy klawisz d (prawo) lub a (lewo) obiekt klasy turn_point jest tworzony na współrzędnych głowy snake i ma za zadanie skręcić ruch po ruchu całego węża, po ostatnim segmencie usuwając się. Jednak w pewnym momencie (podczas działania programu) snake rozjeżdża się właśnie, kiedy chcemy skręcić. Gdzie jest problem? Kod pisany pod Linuxa na ncurses.

1 odpowiedź

0 głosów
odpowiedź 11 kwietnia 2017 przez Knayder Nałogowiec (37,640 p.)
wybrane 11 kwietnia 2017 przez ignacjusz
 
Najlepsza

Generalnie nie wiem po co tak robisz zakręt, mało wydajny.
Masz dwie łatwiejsze możliwości:
1. Iterując od tyłu, nadajesz pozycję, elementowi z przodu.

snake[0].move( getDirectionFromUserInput() );
for(int i = snake.size()-1; i>=1; i--)
    snake[i].position = snake[i-1].position;

2. Za każdym razem, tworzysz nową głowę i usuwasz ostatni element.
 

snake.push_front( SnakePart( getPositionFromUserInput() ) );
snake.erase( snake.back() );

 

komentarz 11 kwietnia 2017 przez ignacjusz Bywalec (2,390 p.)
Ten sposób zakrętu to efekt wielogodzinnego myślenia nad problemem w nocy. Jako, że nie wpadłem na nic sensowniejszego, zakodowałem to. Co do nowego sposobu to chyba wybiorę "dziedziczenie" pozycji.
komentarz 11 kwietnia 2017 przez Knayder Nałogowiec (37,640 p.)
Dziedziczenie pozycji (Fajna nazwa xD) może być przydatna, jeżeli wąż ma jakiś wzór na sobie, czy coś.

No i skręcając w ten sposób wężem, nie musisz ograniczać go tylko do ruchu poziomo, lub pionowo. :D
komentarz 11 kwietnia 2017 przez ignacjusz Bywalec (2,390 p.)
Wszystko śmiga :D. Dzięki!

Podobne pytania

0 głosów
0 odpowiedzi 142 wizyt
0 głosów
0 odpowiedzi 177 wizyt
0 głosów
3 odpowiedzi 655 wizyt
pytanie zadane 27 kwietnia 2017 w C i C++ przez Antero00 Gaduła (3,670 p.)

92,573 zapytań

141,423 odpowiedzi

319,645 komentarzy

61,959 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...