Я не уверен, что вы правильно скопировали свой код
if(cp == start
|| (cp.getColumn() > 0 || cp.getColumn() < maze[0].length-1
|| cp.getRow() > 0 || cp.getRow() < maze.length+1)) {
Для простоты понимания представьте, что maze.length [0] -1 оценивается, скажем, в 3, а затем рассмотрите этот бит:
cp.getColumn() > 0 || cp.getColumn() < 3
Это будет верно для каждого значения cp.getColumn (), попробуйте, скажем, 8, да, больше 0, -99, да, это меньше 3. Держу пари, что вы имели в виду
cp.getColumn() > 0 && cp.getColumn() < 3
это будет верно, если столбец находится в лабиринте.Если вы хотите проверить выход из лабиринта:
cp.getColumn() <= 0 || cp.getColumn() >= 3
(примечание, которое я использую <= 3, а не просто == 3 намеренно, это касается случаев, таких как перемещение более чем на один шаг.)</p>
Если вы хотите проверить, находится ли он в лабиринте, у вас есть
if(cp == start
|| (
cp.getColumn() > 0 && cp.getColumn() < columnCount
&& cp.getRow() > 0 && cp.getRow() < rowCount)) {
, если вы хотите проверить, находится ли он за пределами лабиринта
if(cp != start
&& (
cp.getColumn() <= 0 || cp.getColumn() >= columnCount
|| cp.getRow() <= 0 || cp.getRow() >= rowCount)) {