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

Snake, ruch

Ostatnio zmodyfikowano 2014-05-08 19:18
Autor Wiadomość
sebox
Temat założony przez niniejszego użytkownika
Snake, ruch
» 2014-05-07 21:19:48
Witam!

Zacząłem sobie pisać snake w tablicy dwuwymiarowej. I zrobiłem ruch w górę dół lewo i prawo i to działa, kasuje się ostatnia część ogona i dodaje na początku ale jeżeli snake leci przykładowo do góry a potem skręcę w lewo to nie kasują się już te części w pionie, reasumując po prostu mam problem ze współrzędnymi końca ogona, nie wiem w jaki sposób je określać.
 Kod ruchu do góry:
C/C++
if( * kie == 3 )
{
    gotoxy( * wy, * wx = x - 1 );
    sprawdz.kolizjazesciana( x, y, tab[ * wx ][ * wy ] );
    cout << char( 219 );
    * mx = x + length;
    * my = y;
    gotoxy( koniecy, koniecx );
    cout << " ";
    Sleep( 1000 );
}

*mx i *my to współrzędne końca ogona, nie mam pomysłu jak inaczej można by było "znaleźć" te współrzędne z każdym obiegiem pętli. Prosiłbym o jakieś wskazówki.
P-109449
pekfos
» 2014-05-07 21:27:34
*mx i *my to współrzędne końca ogona, nie mam pomysłu jak inaczej można by było "znaleźć" te współrzędne z każdym obiegiem pętli.
A po co je znajdować, skoro już je masz? Na dwóch zmiennych węża i tak nie zrobisz.
P-109452
sebox
Temat założony przez niniejszego użytkownika
» 2014-05-07 21:37:05
Dlaczego nie? Jeżeli chodzi o kolizję głowy z ogonem, to będę przypisywał wartość 1 dla każdego elementu ciała snake, sprawdzał kolizję a potem zerował. Ten sposób z *mx i *my który napisałem jest błędny bo działa tylko jeżeli snake idzie tylko w jedną ze stron, jeżeli wykona po jakimś czasie ruch w inną stronę to to już nie zadziała i właśnie nie wiem jak by to inaczej zrobić.
P-109454
pekfos
» 2014-05-07 22:21:24
Dlaczego nie?
bo działa tylko jeżeli snake idzie tylko w jedną ze stron, jeżeli wykona po jakimś czasie ruch w inną stronę to to już nie zadziała
Na podstawie tej twojej tablicy nie możesz określić, gdzie wąż skręca. Wystarczający powód?
P-109459
sebox
Temat założony przez niniejszego użytkownika
» 2014-05-08 14:52:35
Mogę określić i określam jaki kierunek w switch case mam jeśli przykładowo kliknie 'w' to *kie = ileśtam jakaś liczba którą uznam za dany kierunek, *wx i *wy są współrzędnymi głowy, więc to jest jak powinno ale powtarzam mam problem z końcem ogona bo nie wiem jak w poprawny sposób znaleźć współrzędne ostatniej pozycji ogona, żeby móc ją skasować a jeżeli snake zje jabłko to nie kasować.
P-109492
pekfos
» 2014-05-08 17:50:27
Mogę określić i określam
To za mało. Utwórz kontener i wrzucaj pozycje elementów węża. Dodajesz pozycje na początek i usuwasz (lub nie) z końca.
P-109501
sebox
Temat założony przez niniejszego użytkownika
» 2014-05-08 19:18:49
Ok, szczerze mówiąc nie uczyłem się jeszcze o kontenerach, więc będzie to dobry moment do rozpoczęcia nauki, dzięki za pomoc i nakierowanie :)
P-109516
« 1 »
  Strona 1 z 1