我正在编写一个基于 Allegro 的蛇游戏,但包含蛇各部分坐标的向量存在问题。
这是删除蛇的最后一个元素并添加一个新元素的函数。以前我已经声明vector <int> snake_x ; vector <int> snake_y;
并且我还推回了向量中所需的数字。
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;
}
}
}
当我运行 exe 文件时,它会打开一个错误消息框,指出 vector iterator not dereferencable 。这是什么意思 ?