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

Allegro 5 snake-jak zrobić aby wąż się powiększał?

Ostatnio zmodyfikowano 2013-03-15 09:25
Autor Wiadomość
Forczek
Temat założony przez niniejszego użytkownika
Allegro 5 snake-jak zrobić aby wąż się powiększał?
» 2013-03-06 19:15:52
Witam, piszę powoli od kilku dni grę, na podstawie gry Snake. Użyłem mapy kafelkowej. Mam już: menu, losowanie pozycji owocu, węża, oraz zrobiłem mapę kafelkową. Jak zrobić powiększanie się węża?
P-77826
Savail
» 2013-03-06 19:23:41
kolejne obiekty ciała węża przechowuj w std::vector. A później kolejno wyświetlaj z odpowiednią pozycją
P-77829
Forczek
Temat założony przez niniejszego użytkownika
» 2013-03-06 19:28:06
Ok, zrobię powiększanie się węża. Ale jak z wyświetlaniem, bo na to z kolei też nie mam pomysłów.
P-77831
Savail
» 2013-03-06 19:42:53
Skoro używasz mapy kafelkowej to po prostu, za każdym razem gdy głowa węża wejdzie na następny kafel zapisujesz jej poprzednie współrzędne i zmieniasz współrzędne pierwszego obiektu za nią właśnie na te poprzednie współrzędne. I tak samo z każdym elementem ciała węża.  Trzeci element dostaje poprzednie współrzędne (przed ruchem) elementu drugiego, czwarty współrzędne trzeciego itd...
P-77835
Forczek
Temat założony przez niniejszego użytkownika
» 2013-03-06 19:50:13
Odziwo, to wiem jak zrobić. Z liczbami itp. ale chodzi mi o samo wyświetlanie. Jak zrobić, żeby nie pisać if(....) po ileś tam razy. Tylko raz to zapętlić. Bo z powiększaniem się węża dam rade. Samo wyświetlanie.
P-77836
killjoy
» 2013-03-06 19:54:57
Kolego @Forczek skoro masz już daną pozycje pojedyńczego segmentu węża w vectorze, to poprostu rysujesz te segmenty na danych pozycjach (każdy segment ma jeden vector z jego pozycją x i y).
P-77837
Forczek
Temat założony przez niniejszego użytkownika
» 2013-03-06 20:04:56
Dobra. Na 99% dam już rade. Jak nie, to po prostu otworze znowu temat.
P-77838
Forczek
Temat założony przez niniejszego użytkownika
» 2013-03-09 08:43:44
A więc. Do tej pory wymyśliłem, jak zrobić, aby mój wąż się powiększał i jak zrobić, żeby jakby to powiedzieć, wąż wił się :D. Ale no niestety mi to nie działa. Oto kod:
C/C++
if( pozycja_weza_x[ 0 ] == pozycja_owocu_x && pozycja_weza_y[ 0 ] == pozycja_owocu_y )
{
    food = true;
    dlugosc_weza += 1; // powiększanie się węża
}



if( i == 0 ) // nadanie odpowiednich wartości, dwóm zmiennym "i" oraz "k" potrzebne będzie to potem.
{
    i = dlugosc_weza;
    k = i;
}
else
{
    i -= 1;
    k = i - 1;
}


if( frame == 1000 - i && i > 0 ) // frame mam ustawiony na 1000. Aby zapobiegać wykonywaniu się za często akcji jest frame == 1000 - i.
{
    pozycja_weza_x[ i ] = pozycja_weza_x[ k ]; // a tutaj jest zmiana pozycji x. Czyli pozycja_weza_x[ i ] jest równa pozycja_weza_x[ k ] czyli o jeden mniejsza. Np. p_w_x[ 1 ] = p_w_x[ 0 ]
    pozycja_weza_y[ i ] = pozycja_weza_y[ k ]; // to samo.
}
Niestety, kod mi nie działa. Nie wiem dlaczego. Wypisywałem pozycje węża, po wydłużeniu się. Głowa jest bez zmian, lecz pozostałe części zwracają wartość zero. Jakby było coś niezrozumiałe, to proszę pytać ^^
P-77958
« 1 » 2
  Strona 1 z 2 Następna strona