现在我有一个学校作业,我必须在java中创建一个连接4游戏而没有使用数组的gui。到目前为止,我已经能够让游戏连续四次检测水平,但我似乎无法连续四次获得垂直。最初我的阵列是一个6x7,但我已经将它改为5x5,只是为了测试交换数组dementions的概念。为了减少混乱,我只在垂直检测中包含了部分代码。
for (column = 0; column < board.length; column++) {
count_piece = 0;
max = 0;
for (row = 0; row < board.length; row++) {
if (max < count_piece) {
max = count_piece;
}
if (board[column][row] == 'X') {
count_piece++;
} else {
count_piece = 0;
}
}
}
System.out.println(max);
if (max == 4) {
System.out.println("\nYou Win!");
break;
}
如果您需要更多信息或有任何不清楚的地方,请告诉我,我很乐意提供更多信息。
编辑: 这是倒环的那个。
for (row = 0; row < board.length; row++) {
count_piece = 0;
max = 0;
for (column = 0; column < board.length; column++) {
if (max < count_piece) {
max = count_piece;
}
if (board[column][row] == 'X') {
count_piece++;
} else {
count_piece = 0;
}
}
}
答案 0 :(得分:2)
如何以内部循环更改的方式反转循环,而不是行?
还要使你的内部循环占用你所在的单个数组的长度。
因此,不要使用board.length
,而是使用board[i].length
修改强>
我认为你内心循环中的逻辑是错误的......
试试这个:
if (board[row][column] == 'X') {
count_piece++;
if(count_piece == 4) {
System.out.println("you win");
return;
}
} else {
count_piece = 0;
}
这里有水平和垂直的检查,任何大小的数组
int count_piece = 0;
//Checking Vertical Win
for (int row = 0; row < board.length; row++) {
count_piece = 0;
for (int column = 0; column < board[row].length; column++) {
if (board[row][column] == 'X') {
count_piece++;
if (count_piece == 4) {
System.out.println("you win");
return;
}
} else {
count_piece = 0;
}
}
}
//Checking Horizontal Win
for (int column = 0; column < board.length; column++) {
count_piece = 0;
for (int row = 0; row < board[column].length; row++) {
if (board[row][column] == 'X') {
count_piece++;
if (count_piece == 4) {
System.out.println("you win");
return;
}
} else {
count_piece = 0;
}
}
}
答案 1 :(得分:0)
我看到的主要问题是在递增count_piece之前分配max(意味着你必须连续获得5个)。 另外,正如其他人所说的长度可能有问题(不熟悉java,所以你可以侥幸使用它,因为长度将是5或25,取决于它是否需要所有索引或只是第一列索引。无论你何时回到6x7它会打破。 您的代码当前正在执行的操作是遍历每一列并检查该行是否连续4行。你想要的是检查两个轴上的连续4个(我的解决方案是有一个行计数变量和一个列计数变量(除非你需要对角线))。 加入 count_piece_Col = 0;最大= 0; 在第一个for循环之上,并将其递增,类似于行计数
*懒惰的方式
for(column=0;column<board.length;column++)
{
count_piece=0; max_r=0;
for(row=0;row<board.length;row++)
{
if(max_r<count_piece)
{
max_r=count_piece;
}
if(board[column][row]=='X')
{
count_piece++;
}
else
{
count_piece=0;
}
}
}
for(row=0;row<board.length;row++)
{
count_piece=0; max_c=0;
for(column=0;column<board.length;column++)
{
if(max_c<count_piece)
{
max_c=count_piece;
}
if(board[column][row]=='X')
{
count_piece++;
}
else
{
count_piece=0;
}
}
}