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

[Allegro 5]Snake i części ciała

Ostatnio zmodyfikowano 2012-02-22 17:19
Autor Wiadomość
bingo009
Temat założony przez niniejszego użytkownika
[Allegro 5]Snake i części ciała
» 2012-02-22 14:06:59
Witam was serdecznie, ostatnio pracuje nad snake'em w Allegro 5. Cała grafika to zwykłe prymitywy(czerwone małe kółko jako jabłko, i zielone większe jako wąż). Mam jeden problem. Wiadomo, że w Snake'u, ciało rośnie wraz z zjadaniem kolejnych jabłek. Steruje górną częścią węża i jak zrobić aby pozostałe części krok w krok podążały za górną częścią. Czyli, że górna skręci w prawo, potem druga za nią, a potem trzecia itd. Jak to można zrobić?
P-51220
szyx_yankez
» 2012-02-22 14:23:18
Np. tak(jeżeli Twój wąż chodzi płynnie, a nie "skokowo"):
C/C++
vector < int > vec_x;
vector < int > vec_y;
int X, Y; //pozycja początku węża
//while
vec_x.push_back( X );
vec_y.push_back( Y );

for( int i = 0; i < snake_size; i++ )
     draw_circle( vec_x[ vec_x.size() - i * circle_size ], vec_y[ vec_y.size() - i * circle_size ] );


P-51221
pekfos
» 2012-02-22 15:28:58
Nie rozumiem, po co zakładać temat i czekać na odpowiedź nx minut jak można samemu użyć mózgu i poszukać w google lub w innej szukajce(Rozwiązanie miałbyś w n minut zamiast nx minut).
Były tutaj (nie licząc tego tematu) co najmniej 4 tematy o implementacji Snake'a. Ich znalezienie też nie jest żadną filozofią..
P-51222
bingo009
Temat założony przez niniejszego użytkownika
» 2012-02-22 17:04:04
Tu mam błędy w kompilacji:

c:\users\7\documents\visual studio 2010\projects\graphics snake\graphics snake\main.cpp(72): error C2065: 'vec_y' : undeclared identifier
1>c:\users\7\documents\visual studio 2010\projects\graphics snake\graphics snake\main.cpp(72): error C2065: 'vec_y' : undeclared identifier
1>c:\users\7\documents\visual studio 2010\projects\graphics snake\graphics snake\main.cpp(72): error C2228: left of '.size' must have class/struct/unio

Tu deklaracja zmiennych:
C/C++
vector < int > vec_x;
vector < int > vec_y;
int jx, jy;
int player_x = 315, player_y = 235;
int snake_size = 1;

A tu pętla:
C/C++
while( !al_key_down( & key_state, ALLEGRO_KEY_ESCAPE ) )
{
    al_get_keyboard_state( & key_state );
   
    if( al_key_down( & key_state, ALLEGRO_KEY_RIGHT ) ) ++player_x;
   
    if( al_key_down( & key_state, ALLEGRO_KEY_LEFT ) ) --player_x;
   
    if( al_key_down( & key_state, ALLEGRO_KEY_UP ) ) --player_y;
   
    if( al_key_down( & key_state, ALLEGRO_KEY_DOWN ) ) ++player_y;
   
    al_clear_to_color( al_map_rgb( 0, 0, 0 ) );
   
    vec_x.push_back( player_x );
    vec_y.push_back( player_y );
   
   
    for( int i = 0; i < snake_size; i++ )
    {
        al_draw_circle( vec_x[ vec_x.size() - i * 6 ], vec_y[ vec_y.size() - i * 6 ], 6.25, al_map_rgb( 28, 223, 0 ), 19 );
    }
   
    al_flip_display();
   
}

Co jest nie tak?
P-51231
pekfos
» 2012-02-22 17:16:20
W jakim bloku są definicje zmiennych?
P-51232
bingo009
Temat założony przez niniejszego użytkownika
» 2012-02-22 17:19:11
W żadnym, są luzem poza funkcjami w pliku main.cpp.

Edit: Przeniosłem deklaracje zmiennych dla wektora, do funkcji main. Teraz kompiluje się, ale kiedy uruchamiam wywala mi:
http://www.kamilsite.xaa.pl/Obrazy/Przechwytywanie.JPG

Edit: Zamykam, ale dzięki za pomoc. Wolę sam pokombinować troszkę.
P-51233
« 1 »
  Strona 1 z 1