Вы можете переместить части своего кода в функции:
bool mayGoUp(int ro, int co)
{
return ro > 0;
}
bool mayGoDown(int ro, int co)
{
return ro < NUMROWS - 1;
}
bool mayGoLeft(int ro, int co)
{
return co > 0;
}
bool mayGoRight(int ro, int co)
{
return co < NUMCOLS - 1;
}
Примечание: я немного изменил логику: с co < NUMROWS - 1
до co < NUMCOLS - 1
;не уверен, какой из них правильный.
Затем вы можете объединить их простым способом:
bool mayGoUpLeft(int ro, int co)
{
return mayGoUp(ro, co) && mayGoLeft(ro, co);
}
Затем, используя их в своем коде, ваш код станет понятнее:
switch (direction) {
case 0:
if (MayGoRight(ro, co) && island[ro][co + 1] == ...
{ //move right
co++;
break;
}
...
case 99:
if (MayGoUpRight(ro, co) && ...
{ // move up and right
ro--;
co++;
break;
}