Используя описанный вами метод, один из способов просто избежать получения IndexOutOfBoundsException
состоит в том, чтобы расширить доску до 18 x 24
вместо 10 x 24
, а затем написать дополнительный код, который не позволяет перемещать блок влево / вправо, если в массиве объектов будут какие-либо 1
, которые покидают средние 10 квадратов сетки. Добавив этот «отступ» к вашей сетке, вы избежите исключения и все еще сможете его реализовать.
Я надеюсь, что этот подход имеет смысл для вас. Если нет, я могу дать более псевдокодовый ответ, но я надеюсь, что вы поняли идею. (Просто прокомментируйте, если у вас есть какие-либо вопросы.)
Кстати, @assylias делает очень хорошую мысль. Важно иметь хороший дизайн / план, прежде чем вы начнете реализовывать такие вещи, чтобы избежать таких препятствий. Это приходит с опытом, поэтому продолжайте практиковаться, и вы освоите его.
ПРИМЕЧАНИЕ: Как отметил Ник в комментарии, другой способ сделать это - просто проверить, не покидают ли какие-либо единицы из сетки, прежде чем перемещать какой-либо из массивов. Это, безусловно, возможно (и, возможно, более элегантное / простое решение), хотя может быть немного сложнее понять это.