I am writing an Allegro based snake game and have a problem with vector which contains the coordinates of the parts of the snake.
Here is the function which deletes the last element of the snake and adds a new one.
Previously I have declared vector <int> snake_x ; vector <int> snake_y;
and I have also pushed back required numbers in the vector.
void moove_snake(int direction){
switch (direction){
case UP:
{
vector <int>::iterator xIter;
vector <int>::iterator yIter;
snake_x.erase(snake_x.begin());
snake_y.erase(snake_y.begin());
xIter=snake_x.end();
yIter=snake_y.end();
snake_x.push_back(*xIter);
snake_y.push_back(*yIter-20);
draw();
al_flip_display();
al_rest(0.4);
break;
}
case DOWN:
{
vector <int>::iterator xIter;
vector <int>::iterator yIter;
snake_x.erase(snake_x.begin());
snake_y.erase(snake_y.begin());
xIter=snake_x.end();
yIter=snake_y.end();
snake_x.push_back(*xIter);
snake_y.push_back(*yIter+20);
draw();
al_flip_display();
al_rest(0.4);
break;
}
case LEFT:
{
vector <int>::iterator xIter;
vector <int>::iterator yIter;
snake_x.erase(snake_x.begin());
snake_y.erase(snake_y.begin());
xIter=snake_x.end();
yIter=snake_y.end();
snake_x.push_back(*xIter-20);
snake_y.push_back(*yIter);
draw();
al_flip_display();
al_rest(0.4);
break;
}
case RIGHT:
{
vector <int>::iterator xIter;
vector <int>::iterator yIter;
snake_x.erase(snake_x.begin());
snake_y.erase(snake_y.begin());
xIter=snake_x.end();
yIter=snake_y.end();
snake_x.push_back(*xIter+20);
snake_y.push_back(*yIter);
draw();
al_flip_display();
al_rest(0.4);
break;
}
}
}
When I run the exe file it opens a error message box saying that vector iterator not dereferencable . What it means ?