Как и все другие комментарии, вы определенно должны использовать функцию в вашем состоянии while. Это действительно нечитаемое выражение.
Может быть, это вам поможет:
bool conditionValid(char (&map)[25][100], int target_x, int target_y)
{
char c='0';
for(int i = 0; i<4; ++i)
{
switch(i)
{
case 0: c = map[target_y-1][target_x]; break; //check the first character
case 1: c = map[target_y+1][target_x]; break; //check the second character
case 2: c = map[target_y][target_x-1]; break; //check the third character
case 3: c = map[target_y][target_x+1]; break; //check the forth character
}
switch(c)
{
case '_': std::cout << "aborting ... c" << i << "= " << c << std::endl; return false;
case '-': std::cout << "aborting ... c" << i << "= " << c << std::endl; return false;
case '=': std::cout << "aborting ... c" << i << "= " << c << std::endl; return false;
}
}
return true;
}
int Strategy::path(char (&map)[25][100], int current_y, int current_x, int Target_x, int Target_y)
{
int i;
int n;
bool up=false;
bool down=false;
bool left=false;
bool right=false;
while (conditionValid(map, Target_x, Target_y))
{
...
}
}
Как только вы поймете, почему ваш цикл прерван, вы можете удалить std::cout
s