我正在尝试做一个四连环游戏,筹码下降到最低点,然后变成下一个玩家回合。

我遇到的问题是,我只能填写最下面的行,因为每次我将芯片放置在那里时,我都会再次调用placeChip方法,这将重新启动for循环。我看到了这个问题,因此我制作了一个静态ArrayList来保存为每一行放置的项目数量的值。因此,例如,如果板子是6行乘7列,则arrayList将如下所示:

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


在我的placeChip方法中,我说如果输入的位置不完整,则将芯片放在此处。但是,无论我输入什么ArrayOutOfBoundsException错误,都会发生错误,在这种情况下(6x7),它表示索引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是用户要插入的列的值。

让我知道我是否提供了足够的信息,或者是否错过了包含其他内容的信息。

最佳答案

无法发表评论:

ammountOfItemsInEachCol.get(dropCol - 1);可能从ArrayList获得值为6。如果您的列的长度为6,则索引为0-5。您可能应该从rowInput中减去一个,但这几乎是一个猜测,因为代码太少了。

07-25 21:39