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

[C++]Vector subscript out of range

Ostatnio zmodyfikowano 2012-02-25 20:07
Autor Wiadomość
bingo009
Temat założony przez niniejszego użytkownika
[C++]Vector subscript out of range
» 2012-02-24 21:47:09
Witam was serdecznie, otóż mam problem z wyżej wspomnianym błędem. Używam wektora aby rysować węża zgodnie z ilością elementów. Wprawdzie kompiluje się dobrze, lecz wywala mi ten błąd:
http://www.kamilsite.xaa.pl/Obrazy/Przechwytywanie.JPG

O co może chodzić? Tu jest kawałek kodu z mojej głównej pętli:
C/C++
vec_x.push_back( player_x );
vec_y.push_back( player_y );

al_draw_filled_rectangle( player_x - 5, player_y - 5, player_x + 10, player_y + 10, al_map_rgb( 28, 223, 0 ) );

for( int i = 0; i < snake_size; i++ )
{
    al_draw_filled_rectangle( vec_x[ vec_x.size() - i - 5 ], vec_y[ vec_y.size() - i - 5 ], vec_x[ vec_x.size() - i + 10 ], vec_y[ vec_y.size() - i + 10 ], al_map_rgb( 28, 223, 0 ) );
}
P-51381
ison
» 2012-02-24 21:52:09
C/C++
vec_y[ vec_y.size() - i + 10 ]
to +10 raczej powinno być poza [] ;)
to samo z -5
P-51382
bingo009
Temat założony przez niniejszego użytkownika
» 2012-02-24 21:58:53
Nic to nie dało.
P-51384
ison
» 2012-02-24 22:29:06
C/C++
vec_x[ vec_x.size() - i ]
dla i=0 odwołujesz się do nieistniejącego elementu

vec_x[ vec_x.size() - i - 1 ]
P-51385
bingo009
Temat założony przez niniejszego użytkownika
» 2012-02-25 18:09:59
Dalej nic, próbowałem też nadać i początkową wartość 1 i też nic.
P-51412
ison
» 2012-02-25 18:13:05
wklej aktualny kod (w sensie samego fora)
jesteś pewien, że snake_size wynosi zawsze dokładnie tyle ile vec_x.size() i vec_y.size()?
P-51413
pekfos
» 2012-02-25 18:26:32
C/C++
vec_x.push_back( player_x );
vec_y.push_back( player_y );
lepiej chyba użyć struktury a zamiast vectora, listy.
P-51414
bingo009
Temat założony przez niniejszego użytkownika
» 2012-02-25 18:41:40
C/C++
vec_x.push_back( player_x );
vec_y.push_back( player_y );

al_draw_filled_rectangle( player_x - 5, player_y - 5, player_x + 10, player_y + 10, al_map_rgb( 28, 223, 0 ) );

for( int i = 0; i < snake_size; i++ )
{
    al_draw_filled_rectangle( vec_x[ vec_x.size() - i - 1 ] - 5, vec_y[ vec_y.size() - i - 1 ] - 5, vec_x[ vec_x.size() - i - 1 ] + 10, vec_y[ vec_y.size() - i - 1 ] + 10, al_map_rgb( 28, 223, 0 ) );
}

Zauważyłem też, że błąd występuje wtedy, kiedy snake_size jest większe niż 1.
P-51415
« 1 » 2
  Strona 1 z 2 Następna strona