Проблема в игре из символов

В символьной игре необходимо чтобы свет от фонарика(символы >, < ...) не проходил сквозь стены(символ 'o'). У фонарика есть несколько направлений, все работают кроме направления вверх. (тут некоторые части кода, весь код не вижу смысла показывать так как всё остальное нормально работает и не затрагивает проблему)

if(flashlight == 1){
        for(int y = 0; y < MAP_HEIGHT; y++){
            for(int x = 0; x < MAP_WIDTH; x++){
                if(direction == "up" && x == playerX && y < playerY){
                    if(map[y][x] =='o') break;
                    else map[y][x] = '^';
                }
            }
        }
        for(int x = 0; x < MAP_WIDTH; x++){
            for(int y = 0; y < MAP_HEIGHT; y++){
                if(direction == "down" && x == playerX && y > playerY){
                    if(map[y][x] == 'o') break;
                    else map[y][x] = 'v';
                }
            }
        }
    }

...

case 'w':{
                if(map[playerY-1][playerX] != 'o'){
                    playerY--;
                    direction = "up";
                }
                break;

...

case 'f':{
                if(flashlight == 1) flashlight = 0;
                else flashlight = 1;
                break;
            }

Ответы (1 шт):

Автор решения: bipll

Ну да, луч фонаря начинается сверху и плавно идет к игроку, но по пути утыкается в стену.

if(flashlight == 1) {
    if(direction == "up") {
        for(int y = playerY - 1; y >= 0 && map[y][playerX] != 'o'; --y) {
            map[y][playerX] = '^';
        }
    }
}
→ Ссылка