Векторное сравнение вне диапазона

Я делаю простую игру, и у меня проблемы с созданием границ для движений игроков. Карта является 2D вектором. Когда я сравниваю вектор с текущей позицией игроков, я получаю ошибку во время бега. Ошибка говорит мне, что вектор находится вне диапазона.

Вот где карта создана. Это внутри собственного конструктора классов.

vector< vector<char> > map_parts;
map_parts.resize(25);
for ( int i = 0; i < 25; i++ )
{
map_parts[i].resize(80);
}

//check if file open worked
ifstream map_reader ( "C:/Users/Ryan Melendez/Desktop/C++/programs/Curses/City.txt" );
if ( ! map_reader )
{
printw( "Error.\n" );
}

//save map to memory
while ( ! map_reader.eof() )
{
for ( int i = 0; i < 25; i++ )
{
for ( int j = 0; j < 80; j++ )
{
map_reader >> noskipws >> map_parts[i][j];
}
}
}
map_reader.close();

//print map
for ( int i = 0; i < 25; i++ )
{
for ( int j = 0; j < 80; j++ )
{
printw( "%c", map_parts[i][j] );
}
}

И здесь сравнивается вектор, чтобы определить, сталкивается ли игрок со стеной. Этот код написан как метод в другом классе. В первом случае есть простой тест IF, чтобы увидеть, является ли координата слева стеной.

//Move player
void player_class::movePlayer()
{
int temp = getch();
switch (temp)
{
case KEY_LEFT:
if (map_parts[player.x - 1][player.y] == '|' || '_')
{
break;
}
move(player.y, player.x);
addch(' ');
player.x--;
break;
case KEY_UP:
move(player.y, player.x);
addch(' ');
player.y--;
break;
case KEY_RIGHT:
move(player.y, player.x);
addch(' ');
player.x++;
break;
case KEY_DOWN:
move(player.y, player.x);
addch(' ');
player.y++;
break;
}
move(player.y, player.x);
addch(player_char);
}

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …