Как в C++ красиво реализовать множество условий?
Сложные условия следует разбивать на простые. равно как и слдожные функции следует разбивать на простые. (qX >= 0 && qY >= 0 && qX < room_size && qY < room_size)
Это условие, как я вижу, проверяет вхождение я прямоугольник? Лучше всего в отдельную функцию. Повысит читаемость.
например так:bool isInRoom(int qX, int qY, int room_size) 
{
  if (qX < 0)
    return false;
  if (qY < 0)
    return false;
  if (qX >= room_size)
    return false;
  if (qY >= room_size)
    return false;
  return true;
}
Боитесь за производительность - inline функцию. Затем так:if (isInRoom(qX, qY, room_size) && water[qX][qY] < water[x][y] && water[x][y] != 0)
...
или так:if (! isInRoom(qX, qY, room_size)) // проверка предусловия
  return;
if (water[qX][qY] < water[x][y] && water[x][y] != 0)
...
Строка 133 pastebin.com/tdiqwpSf
Вот сделал в отдельную функцию часть проверки... конечно мне кажется не очень красиво...
Хочется вообще весь блок начиная со строки 133 по 156 в отдельную функцию. Но ссылки, линки и прочее только сильнее запутают мне кажется.