gpt4 book ai didi

java - 循环连接四个网格

转载 作者:行者123 更新时间:2023-12-02 02:10:28 26 4
gpt4 key购买 nike

我正在从事 Connect Four 项目,但在获胜检查方面遇到了困难。我认为这与我在网格上循环的方式有关。它可以水平工作,但不能垂直工作,而且有点对角工作。

public boolean gameStatus(MyBoard gameBoard, int columnPosition, CellState gameToken) {
int rowPosition = 0;

for (int i = 0; i < gameBoard.getWidth(); i++)
for (int j = 0; j < gameBoard.getHeight(); j++)
if (gameBoard.get(i, columnPosition) != CellState.FREE)
rowPosition = i;

if (checkColumn(gameBoard, columnPosition, gameToken, rowPosition))
return true;
}


public boolean checkColumn(MyBoard gameBoard, int columnPosition, CellState gameToken, int rowPosition) {
int tokenCounter = 1;

if ((rowPosition + 4) <= 6)
for (int i = rowPosition + 1; i <= rowPosition + 3; i++)
if (gameToken == gameBoard.get(i, columnPosition))
tokenCounter++;
else
break;

if (tokenCounter == 4)
return true;

return false;
}

最佳答案

我认为这只检查最后一行非空。

Java 不关心缩进,因此如果没有大括号,iffor 仅使用它们后面的语句。这意味着您的 if (checkColumn... 仅运行一次,而不是每列运行一次。

您可能想尝试类似的事情

public boolean gameStatus(MyBoard gameBoard, int columnPosition, CellState gameToken) { 
int rowPosition = 0;
for (int i = 0; i < gameBoard.getWidth(); i++) {
for (int j = 0; j < gameBoard.getHeight(); j++) {
if (gameBoard.get(i, columnPosition) != CellState.FREE) {
rowPosition = i;
}
}
if (checkColumn(gameBoard, columnPosition, gameToken, rowPosition)) {
return true;
}
}

一般来说。我建议不要编写不带大括号的 ifforwhile 语句。它保存的两个字符不值得你可能不小心引入的错误

关于java - 循环连接四个网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50115201/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com