Hi! I made a tile map reading from a file. Almost everything works good, but when a player go out of map, program runs into an error and says that "vector subscript out of range". My question is how to make check for it
Drawing map :
void GameplayScreen::DrawMap(SDL_Renderer *renderer)
{
for (int y = map.size() - 1; y >= 0; --y)
{
for (int x = getStartBlockX(), xEnd = getEndBlockX(); x < xEnd && x < map[y].size(); ++x)
{
if (map[y][x] != "0,0")
{
int tempX = atoi(map[y][x].substr(0, map[y][x].find(',')).c_str());
int tempY = atoi(map[y][x].substr(map[y][x].find(',') + 1).c_str());
srcRect.x = tempX * 32;
srcRect.y = tempY * 32;
srcRect.w = 32;
srcRect.h = 32;
destRect.x = x * 32 + posX;
destRect.y = (y * 32 + posY);
destRect.w = 32;
destRect.h = 32;
vBlock[Earth]->Draw(renderer, srcRect, destRect);
}
}
}
}
getStartBlockX returns first map block, getEndBlockX returns last, so it's like render on screen only a piece of map, not all blocks.
tempX returns x coordinate of tile image, tempY y coordinate. So, for example, if map is like :
0,0 0,0 0,0 0,0 0,0
0,0 0,0 0,0 0,0 0,0
1,0 2,0 0,3 1,0 1,0
0,0 is first block image, 1,0 is one next to the first, 0,3 is 2 under the first block etc.
↧