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

[C++] konsola, Wąż - przyrastanie "ogona"

Ostatnio zmodyfikowano 2013-12-30 19:55
Autor Wiadomość
leon_w
Temat założony przez niniejszego użytkownika
[C++] konsola, Wąż - przyrastanie "ogona"
» 2013-12-30 14:46:20
Nie wiem, w jaki sposób zrobić, by wąż po zjedzeniu "pokarmu" wydłużał się o jedną pozycję.
Kawałek kodu:
C/C++
plansza( x, y, dlugosc ); //funkcja rysująca plansze
pole[ kon_x ][ kon_y ] = ' '; // "usuwanie" ogona (po narysowaniu go na planszy)
kon_x = x, kon_y = y; // zmienia "lokalizacje" ogona, w miejsce, gdzie obecnie jest głowa
pole[ kon_x ][ kon_y ] = ogon; //rysuje "ogon" w miejscu, gdzie obecnie jest głowa
kierunek = przycisk( x, y ); //funkcja zmienia "x" i "y" w zależności od wciśniętego klawisza

Wszystko działa, ale tylko z jedno elementowym ogonkiem. Nie mam pojęcia, jak zrobić, żeby ogon przyrastał po zjedzeniu pokarmu i jednocześnie przy obiegu pętli usuwany był jego koniec.
Może ktoś doradzi jakieś ciekawe rozwiązanie.

Na forum już było kilka takich węży, ale wszystkie linki do kodu wygasły.
P-100642
pekfos
» 2013-12-30 16:48:27
Na forum już było kilka takich węży, ale wszystkie linki do kodu wygasły.
Smutne, nie ma skąd skopiować.. A co z resztą tematów o wężach? (z tym samym pytaniem..)
Allegro 5 snake-jak zrobić aby wąż się powiększał?
Pierwszy wynik. Jakby poszukać, to by się znalazło kilkanaście identycznych (jak ten) tematów (tylko na tym forum)..
P-100665
leon_w
Temat założony przez niniejszego użytkownika
» 2013-12-30 17:05:37
Jak zwykle czarujący i pomocny. Ale mimo wszystko takie uwagi:
Smutne, nie ma skąd skopiować..
 zachowaj dla siebie.
Na Vectorach się raczej nie znam, na zwykłych tablicach to wyjdzie? Z tego co zrozumiałem to trzeba by było zapisywać współrzędne każdej części węża i przy każdym obiegu je przesuwać.
Pokombinuje, może coś wyjdzie.
P-100670
pekfos
» 2013-12-30 17:14:05
zachowaj dla siebie.
Podobnie, jak pisanie, że linki do kodów wygasły. W większości tematów, odpowiedni (i wystarczający) kod jest w treści postu. Pozostałe tematy, w których kod mógłby być schowany za linkiem, to "Nasze prace" i "bezużyteczne tematy".

Na Vectorach się raczej nie znam, na zwykłych tablicach to wyjdzie?
std::vector<> to, w gruncie rzeczy, jest tablica, więc na zwykłych też wyjdzie.
P-100671
leon_w
Temat założony przez niniejszego użytkownika
» 2013-12-30 19:55:32
Jakoś udało mi się to rozwiązać. Tablica i pętlą przesuwam każdy element o jedno pole w tablicy. Wygląda to mniej więcej tak:
C/C++
for( i = ile; i >= 0; i-- )
{
    temp = pozycja_x[ i ]; if( i > 0 ) pozycja_x[ i ] = pozycja_x[( i - 1 ) ]; else pozycja_x[ i ] = x; pozycja_x[( i - 1 ) ] = temp;
    temp = pozycja_y[ i ]; if( i > 0 ) pozycja_y[ i ] = pozycja_y[( i - 1 ) ]; else pozycja_y[ i ] = y; pozycja_y[( i - 1 ) ] = temp;
}

Nie wiem czy o to chodziło, ale działa, chociaż po czasie program się wysypuje ale myślę, że sobie poradzę.
Dzięki pekfos. Mimo że jesteś strasznie uszczypliwy, to w jakiś (niezrozumiały dla mnie)sposób pomagasz.
P-100693
« 1 »
  Strona 1 z 1