Autor Wątek: SNAKE - OGON PROBLEM  (Przeczytany 4475 razy)

hitronic

  • Gość
# Czerwiec 01, 2007, 14:05:44
- Panie majorze, melduję, że nie możemy złapać tej muchy!
- Wytoczyć ciężką artylerię!

Rozumiem, że to analogia jest. Oczywiście nietrafna. Bo nie zdajesz sobie sprawy chyba z względności pojęć jakimi się operuje.
 :P
Zresztą nieważne.
Wracając do tematu, bo problem rozwiązałem. Wiec opiszę jak to zrobiłem.
zmienne globalne
int index;
int lenght = 2;
float pozx[40];
float pozy[40];

w pętli komunikatów
Render();
index++;
if(index >=lenght)
{ index = 0; }
pozx[index] = x;  //  x to pionowa pozycja głowy
pozy[index] = y;  //  y to pionowa pozycja głowy

No i gdzieś tam w funkcjii Render();
Hi_Tronic_DrawQuads(x,y,b);  //Ta funkcja rysuje głowę, gdzie b to bok segmentu
for (int i=0;i<lenght;i++)
{
Hi_Tronic_DrawQuads(pozx[i],pozy[i],b);  // tutaj rysuje się ogon o długości lenght z zapamiętanych w tablicy współrzędnych
}

Mam nadzieję, że się komuś przyda.



« Ostatnia zmiana: Czerwiec 02, 2007, 02:01:32 wysłana przez Hi_Tronic »

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Cytadela

  • Użytkownik
    • KacperDEV

# Czerwiec 28, 2007, 19:46:56
Mam ten sam problem, ale twojego rozwiazania Hi_Tronic nie czaje  :-\

hitronic

  • Gość
# Czerwiec 28, 2007, 20:04:56
A czego dokładnie? Bo w sumie dawno go nie używałem, ale wydaje mi się dość logiczny.

Offline Cytadela

  • Użytkownik
    • KacperDEV

# Czerwiec 29, 2007, 20:19:11
Dalem rade :P...Swoim sposobem rozwiazalem problem. Uzylem TIMERÓW (pisze tego Snake w Allegro)

Offline JasonVoorhees

  • Użytkownik
    • FotoGry

# Lipiec 08, 2007, 19:58:01
Ostatnio Snake'i są bardzo popularne :D Może niedługo zacznie się era gier typu Tron :D ??
I tak nie powstanie na tym polu nic lepszego od Armagetrona :P

Offline Steel_Eagle

  • Użytkownik

# Lipiec 09, 2007, 00:36:55
HIsTronIC weź zainteresuj się czymś takim jak lista lub kolejka :) A potem użyj ich (#include<list> #include<queue>), naprawdę długo Ci to nie zajmie a od razu zobaczysz zalety struktur danych i wszystko napiszesz 4x szybciej i 8x ładniej :)

Offline Grabarz

  • Użytkownik

# Lipiec 09, 2007, 01:45:37
Przyszło mi do głowy inne rozwiązanie. Mamy tablicę: 0 reprezentuje puste miejsce, wartości ujemne mogą reprezentować różne znajdźki, a wartości większe od zera resztę węża. Potrzebne są jeszcze dwa liczniki pierwszy długości węża(np.l) i drugi największej liczby tworżcej jego ciało(np.d). Po przesunięciu głowy pole wypełniamy liczbą>d. Sprawdzamy ile jest pól>0 jeśli jest więcej niż l to sprawdzamy które pole(z tych większych od 1) ma najmniejszą wartość i przypisujemy mu wartość 0. Oczywiście po zjedzeniu znajdźki zwiększamy l. Opis jest raczej pokrętny ale w praktyce jest to banalne. Pozdrawiam

Offline Cytadela

  • Użytkownik
    • KacperDEV

# Lipiec 09, 2007, 02:01:30
Opis jest raczej pokrętny ale w praktyce jest to banalne. Pozdrawiam

No wlasnie. Samych sposobow jest mnostwo. Ja zastosowalem tablice o o rozmiarze najwiekszej jakiej sie dalo :D. Nastepnie do tab[ x ] jest przypisywaa wartosc wsporzednych  tab[x-1] itd. Tylko trzeba zastsosowac do tej metody np. timery. (Nie wiem moze do kazdego sposobu trzeba zastosowac tomery)
« Ostatnia zmiana: Lipiec 09, 2007, 02:03:28 wysłana przez Cytadela »

hitronic

  • Gość
# Lipiec 09, 2007, 02:28:22
HIsTronIC weź zainteresuj się czymś takim jak lista lub kolejka :) A potem użyj ich (#include<list> #include<queue>), naprawdę długo Ci to nie zajmie a od razu zobaczysz zalety struktur danych i wszystko napiszesz 4x szybciej i 8x ładniej :)

Będę o tym pamiętał.  ;)