Код подключения Connect Four (Java) не работает - PullRequest
0 голосов
/ 12 марта 2020

То, что я пытаюсь сделать, - это сделать игру по соединению четырех, где фишки опускаются на дно, а затем они превращаются в следующий ход игроков.

Проблема, с которой я столкнулся, заключалась в том, что я мог заполнить только дно row, потому что каждый раз, когда я помещал туда чип, я снова вызывал метод placeChip, который перезапускал мой для l oop. Я видел эту проблему, и поэтому я создал c ArrayList для хранения значений количества элементов, которые были размещены для каждой строки. Так, например, если бы плата составляла 6 строк на 7 столбцов, arrayList выглядел бы так:

[6, 6, 6, 6, 6, 6, 6]

В моем методе placeChip я говорю, что если введенное место не заполнено, поместите туда чип. Однако, какое бы число я ни вводил, возникает ошибка ArrayOutOfBoundsException, и в этом случае (6x7) он говорит, что Index 6 выходит за пределы длины 6. Вот код, на который я только что ссылался (ошибка указывает на вторую строку в этом фрагменте, предположительно часть rowInput, потому что это единственная новая часть этой строки, которая была частично обработана, но все еще выполнялась раньше):

int rowInput = ammountOfItemsInEachCol.get(dropCol - 1);

if (!(playingBoard.isFull(rowInput, dropCol - 1))) { // saying if the spot is not occupied, fill it

ammountOfItemsInEachCol - это ArrayList, упомянутый выше, а dropCol - это значение, вменяемое пользователем, для какого столбца они хотели бы загляните.

Дайте мне знать, если я не дал достаточно информации или пропустил что-то еще.

1 Ответ

0 голосов
/ 12 марта 2020

Нельзя комментировать так:

ammountOfItemsInEachCol.get(dropCol - 1);, вероятно, получает значение из ArrayList, равное 6. Если длина столбца равна 6, индексы будут 0-5. Вы, вероятно, должны вычесть один из вашего rowInput, но это в значительной степени предположение, так как слишком мало кода.

...