Java 主要/次要对角线和row在connect four项目中未注册为胜利
我已经在这个connect four项目上工作了将近一个星期了,我想我已经完成了,但是如果4个筹码以正确的模式放置,我无法将主对角线、次对角线或行注册为胜利Java 主要/次要对角线和row在connect four项目中未注册为胜利,java,Java,我已经在这个connect four项目上工作了将近一个星期了,我想我已经完成了,但是如果4个筹码以正确的模式放置,我无法将主对角线、次对角线或行注册为胜利 import java.util.Scanner; public class connect4 { public static void main(String args[]) { char[][] connectFourGrid= new char[6][7]; displayGrid(connectFourGrid);
import java.util.Scanner;
public class connect4
{
public static void main(String args[])
{
char[][] connectFourGrid= new char[6][7];
displayGrid(connectFourGrid);
playConnectFour(connectFourGrid);
}
//Plays the game
public static void playConnectFour(char[][] connectFourGrid)
{
Scanner input = new Scanner(System.in);
boolean gameOver = false, playersTurn = true;
int columnPosition = 0;
char chipColor;
while(!gameOver)
{
if(playersTurn)
{
System.out.print("Drop a an 'x' in column (0,6):");
chipColor = 'X';
}
else
{
System.out.print("Drop a an 'o' in column (0,6):");
chipColor = 'O';
}
columnPosition = input.nextInt();
while(columnPosition < 0 || columnPosition > 6)
{
System.out.print("Column Position must be between 0 to 6, try again");
columnPosition = input.nextInt();
}
playersTurn = !playersTurn;
if (dropChip(connectFourGrid, columnPosition, chipColor))
playersTurn = !playersTurn;
else
{
displayGrid(connectFourGrid);
if(gameStatus(connectFourGrid, columnPosition, chipColor))
{
gameOver = true;
System.out.print(chipColor + " won! game over.");
}
else if(checkTie(connectFourGrid))
{
gameOver = true;
System.out.print("It's a tie!");
}
}
}
input.close();
}
/**
* This is where the check for a tie takes place
*/
public static boolean checkTie(char[][] connectFourGrid)
{
for(int i = 0; i < connectFourGrid[0].length; i++)
if(connectFourGrid[0][i] == 0)
return false;
return true;
/**
* This is where the gameStatus will update if 4 x's or o's are found horizontally, vertically or diagonally
*/
}
public static boolean gameStatus(char[][] connectFourGrid, int columnPosition, char chipColor)
{
int rowPosition = 0;
for (int i = 0; i < connectFourGrid.length; i++)
if (connectFourGrid[i][columnPosition] != 0)
{
rowPosition = 1;
break;
}
if(checkColumn(connectFourGrid, columnPosition, chipColor,rowPosition))
return true;
if(checkRow(connectFourGrid, columnPosition, chipColor,rowPosition))
return true;
if(checkMajorDiagonal(connectFourGrid, columnPosition, chipColor,rowPosition))
return true;
if(checkMinorDiagonal(connectFourGrid, columnPosition, chipColor,rowPosition))
return true;
return false;
}
/*
* checks for four chips in minor diagonal
*/
public static boolean checkMinorDiagonal(char[][] connectFourGrid, int columnPosition, char chipColor, int rowPosition)
{
int chipCounter = 1;
for(int i = rowPosition + 1, j = columnPosition - 1; i < connectFourGrid.length && j>= 0; i++, j--)
if(chipColor == connectFourGrid[i][j])
chipCounter++;
else
break;
if (chipCounter >= 4)
return true;
for(int i = rowPosition - 1, j = columnPosition + 1; i >= 0 && j < connectFourGrid[0].length; i--, j++)
if (chipColor == connectFourGrid[i][j])
chipCounter++;
else
break;
if (chipCounter >= 4)
return true;
return false;
}
/*
* checks for four chips in major diagonal
*/
public static boolean checkMajorDiagonal(char[][] connectFourGrid, int columnPosition, char chipColor, int rowPosition)
{
int chipCounter = 1;
for(int i = rowPosition - 1, j = columnPosition - 1; i < 0 && j >= 0; i--, j--)
if (chipColor == connectFourGrid[i][j])
chipCounter++;
else
break;
if (chipCounter >= 4)
return true;
for(int i = rowPosition + 1, j = columnPosition + 1; i < connectFourGrid.length && j < connectFourGrid[0].length; i++, j++)
if (chipColor == connectFourGrid[i][j])
chipCounter++;
else
break;
if (chipCounter >= 4)
return true;
return false;
}
/*
* checks for four chips in a row
*/
public static boolean checkRow(char[][] connectFourGrid, int columnPosition, char chipColor, int rowPosition)
{
int chipCounter = 1;
for (int i = columnPosition - 1; i >= 0; i--)
if (chipColor == connectFourGrid[rowPosition][i])
chipCounter++;
else
break;
if (chipCounter >= 4)
return true;
for(int i = columnPosition + 1; i < connectFourGrid[0].length; i++)
if (chipColor == connectFourGrid[rowPosition][i])
chipCounter++;
else
break;
if (chipCounter >= 4)
return true;
return false;
}
/*
* checks for four chips in a column
*/
public static boolean checkColumn(char[][] connectFourGrid, int columnPosition, char chipColor, int rowPosition)
{
int chipCounter = 1;
if ((rowPosition + 4) <=6)
for (int i = rowPosition + 1; i <= (rowPosition + 3); i++)
if(chipColor == connectFourGrid[i][columnPosition])
chipCounter++;
else
break;
if(chipCounter == 4)
return true;
return false;
}
/**
* Drops a chip to bottom of column picked, if the column is full asks to place again
*/
public static boolean dropChip(char[][] connectFourGrid, int columnPosition, char chipColor)
{
for (int i = connectFourGrid.length - 1; i >= 0; i--)
if (connectFourGrid[i][columnPosition] == 0)
{
connectFourGrid[i][columnPosition] = chipColor;
return false;
}
System.out.println("Column is full, " + chipColor + " player, try again");
return true;
}
//Displays the grid
public static void displayGrid(char[][] connectFourGrid)
{
for (int i = 0; i < connectFourGrid.length; i++)
{
for(int j = 0; j < connectFourGrid[i].length; j++)
System.out.print("|" + connectFourGrid[i][j]);
System.out.println("|");
}
for(int i = 0; i < connectFourGrid.length; i++);
System.out.print("---");
System.out.println();
}
}
如果我能请别人看一下我的代码,让我知道我做错了什么,我会非常感激
import java.util.Scanner;
public class connect4
{
public static void main(String args[])
{
char[][] connectFourGrid= new char[6][7];
displayGrid(connectFourGrid);
playConnectFour(connectFourGrid);
}
//Plays the game
public static void playConnectFour(char[][] connectFourGrid)
{
Scanner input = new Scanner(System.in);
boolean gameOver = false, playersTurn = true;
int columnPosition = 0;
char chipColor;
while(!gameOver)
{
if(playersTurn)
{
System.out.print("Drop a an 'x' in column (0,6):");
chipColor = 'X';
}
else
{
System.out.print("Drop a an 'o' in column (0,6):");
chipColor = 'O';
}
columnPosition = input.nextInt();
while(columnPosition < 0 || columnPosition > 6)
{
System.out.print("Column Position must be between 0 to 6, try again");
columnPosition = input.nextInt();
}
playersTurn = !playersTurn;
if (dropChip(connectFourGrid, columnPosition, chipColor))
playersTurn = !playersTurn;
else
{
displayGrid(connectFourGrid);
if(gameStatus(connectFourGrid, columnPosition, chipColor))
{
gameOver = true;
System.out.print(chipColor + " won! game over.");
}
else if(checkTie(connectFourGrid))
{
gameOver = true;
System.out.print("It's a tie!");
}
}
}
input.close();
}
/**
* This is where the check for a tie takes place
*/
public static boolean checkTie(char[][] connectFourGrid)
{
for(int i = 0; i < connectFourGrid[0].length; i++)
if(connectFourGrid[0][i] == 0)
return false;
return true;
/**
* This is where the gameStatus will update if 4 x's or o's are found horizontally, vertically or diagonally
*/
}
public static boolean gameStatus(char[][] connectFourGrid, int columnPosition, char chipColor)
{
int rowPosition = 0;
for (int i = 0; i < connectFourGrid.length; i++)
if (connectFourGrid[i][columnPosition] != 0)
{
rowPosition = 1;
break;
}
if(checkColumn(connectFourGrid, columnPosition, chipColor,rowPosition))
return true;
if(checkRow(connectFourGrid, columnPosition, chipColor,rowPosition))
return true;
if(checkMajorDiagonal(connectFourGrid, columnPosition, chipColor,rowPosition))
return true;
if(checkMinorDiagonal(connectFourGrid, columnPosition, chipColor,rowPosition))
return true;
return false;
}
/*
* checks for four chips in minor diagonal
*/
public static boolean checkMinorDiagonal(char[][] connectFourGrid, int columnPosition, char chipColor, int rowPosition)
{
int chipCounter = 1;
for(int i = rowPosition + 1, j = columnPosition - 1; i < connectFourGrid.length && j>= 0; i++, j--)
if(chipColor == connectFourGrid[i][j])
chipCounter++;
else
break;
if (chipCounter >= 4)
return true;
for(int i = rowPosition - 1, j = columnPosition + 1; i >= 0 && j < connectFourGrid[0].length; i--, j++)
if (chipColor == connectFourGrid[i][j])
chipCounter++;
else
break;
if (chipCounter >= 4)
return true;
return false;
}
/*
* checks for four chips in major diagonal
*/
public static boolean checkMajorDiagonal(char[][] connectFourGrid, int columnPosition, char chipColor, int rowPosition)
{
int chipCounter = 1;
for(int i = rowPosition - 1, j = columnPosition - 1; i < 0 && j >= 0; i--, j--)
if (chipColor == connectFourGrid[i][j])
chipCounter++;
else
break;
if (chipCounter >= 4)
return true;
for(int i = rowPosition + 1, j = columnPosition + 1; i < connectFourGrid.length && j < connectFourGrid[0].length; i++, j++)
if (chipColor == connectFourGrid[i][j])
chipCounter++;
else
break;
if (chipCounter >= 4)
return true;
return false;
}
/*
* checks for four chips in a row
*/
public static boolean checkRow(char[][] connectFourGrid, int columnPosition, char chipColor, int rowPosition)
{
int chipCounter = 1;
for (int i = columnPosition - 1; i >= 0; i--)
if (chipColor == connectFourGrid[rowPosition][i])
chipCounter++;
else
break;
if (chipCounter >= 4)
return true;
for(int i = columnPosition + 1; i < connectFourGrid[0].length; i++)
if (chipColor == connectFourGrid[rowPosition][i])
chipCounter++;
else
break;
if (chipCounter >= 4)
return true;
return false;
}
/*
* checks for four chips in a column
*/
public static boolean checkColumn(char[][] connectFourGrid, int columnPosition, char chipColor, int rowPosition)
{
int chipCounter = 1;
if ((rowPosition + 4) <=6)
for (int i = rowPosition + 1; i <= (rowPosition + 3); i++)
if(chipColor == connectFourGrid[i][columnPosition])
chipCounter++;
else
break;
if(chipCounter == 4)
return true;
return false;
}
/**
* Drops a chip to bottom of column picked, if the column is full asks to place again
*/
public static boolean dropChip(char[][] connectFourGrid, int columnPosition, char chipColor)
{
for (int i = connectFourGrid.length - 1; i >= 0; i--)
if (connectFourGrid[i][columnPosition] == 0)
{
connectFourGrid[i][columnPosition] = chipColor;
return false;
}
System.out.println("Column is full, " + chipColor + " player, try again");
return true;
}
//Displays the grid
public static void displayGrid(char[][] connectFourGrid)
{
for (int i = 0; i < connectFourGrid.length; i++)
{
for(int j = 0; j < connectFourGrid[i].length; j++)
System.out.print("|" + connectFourGrid[i][j]);
System.out.println("|");
}
for(int i = 0; i < connectFourGrid.length; i++);
System.out.print("---");
System.out.println();
}
}
import java.util.Scanner;
公共类连接4
{
公共静态void main(字符串参数[])
{
char[]connectFourGrid=new char[6][7];
显示网格(connectFourGrid);
playConnectFour(connectFourGrid);
}
//玩游戏
公共静态void playConnectFour(char[][]connectFourGrid)
{
扫描仪输入=新扫描仪(System.in);
布尔gameOver=false,playersTurn=true;
int columnPosition=0;
炭屑颜色;
而(!gameOver)
{
如果(球员轮换)
{
系统输出打印(“在第(0,6)列中放置一个“x”:;
chipColor='X';
}
其他的
{
系统输出打印(“在第(0,6)列中删除一个“o”);
chipColor='O';
}
columnPosition=input.nextInt();
而(columnPosition<0 | | columnPosition>6)
{
System.out.print(“列位置必须介于0到6之间,请重试”);
columnPosition=input.nextInt();
}
playersTurn=!playersTurn;
if(dropChip(connectFourGrid、columnPosition、chipColor))
playersTurn=!playersTurn;
其他的
{
显示网格(connectFourGrid);
if(游戏状态(connectFourGrid、columnPosition、chipColor))
{
gameOver=true;
系统输出打印(chipColor+“赢了!游戏结束”);
}
否则如果(勾选(连接四格))
{
gameOver=true;
System.out.print(“这是一条领带!”);
}
}
}
input.close();
}
/**
*这是检查领带的地方
*/
公共静态布尔校验(char[][]connectFourGrid)
{
对于(int i=0;i=0;i++,j--)
如果(chipColor==connectFourGrid[i][j])
芯片计数器++;
其他的
打破
如果(芯片计数器>=4)
返回true;
对于(int i=rowPosition-1,j=columnPosition+1;i>=0&&j=4)
返回true;
返回false;
}
/*
*检查主对角线上是否有四个缺口
*/
公共静态布尔checkMajorDagonal(char[][]connectFourGrid,int-columnPosition,char-chipColor,int-rowPosition)
{
int芯片计数器=1;
对于(int i=行位置-1,j=列位置-1;i<0&&j>=0;i--,j--)
如果(chipColor==connectFourGrid[i][j])
芯片计数器++;
其他的
打破
如果(芯片计数器>=4)
返回true;
对于(int i=rowPosition+1,j=columnPosition+1;i=4)
返回true;
返回false;
}
/*
*连续检查四个芯片
*/
公共静态布尔校验行(char[][]connectFourGrid,int-columnPosition,char-chipColor,int-rowPosition)
{
int芯片计数器=1;
对于(int i=columnPosition-1;i>=0;i--)
如果(chipColor==connectFourGrid[rowPosition][i])
芯片计数器++;
其他的
打破
如果(芯片计数器>=4)
返回true;
对于(int i=columnPosition+1;i=4)
返回true;
返回false;
}
/*
*在一列中检查四个芯片
*/
公共静态布尔checkColumn(char[][]connectFourGrid,int-columnPosition,char-chipColor,int-rowPosition)
{
int芯片计数器=1;
如果((rowPosition+4)方法中的gameStatus
部分导致您的问题:
import java.util.Scanner;
public class connect4
{
public static void main(String args[])
{
char[][] connectFourGrid= new char[6][7];
displayGrid(connectFourGrid);
playConnectFour(connectFourGrid);
}
//Plays the game
public static void playConnectFour(char[][] connectFourGrid)
{
Scanner input = new Scanner(System.in);
boolean gameOver = false, playersTurn = true;
int columnPosition = 0;
char chipColor;
while(!gameOver)
{
if(playersTurn)
{
System.out.print("Drop a an 'x' in column (0,6):");
chipColor = 'X';
}
else
{
System.out.print("Drop a an 'o' in column (0,6):");
chipColor = 'O';
}
columnPosition = input.nextInt();
while(columnPosition < 0 || columnPosition > 6)
{
System.out.print("Column Position must be between 0 to 6, try again");
columnPosition = input.nextInt();
}
playersTurn = !playersTurn;
if (dropChip(connectFourGrid, columnPosition, chipColor))
playersTurn = !playersTurn;
else
{
displayGrid(connectFourGrid);
if(gameStatus(connectFourGrid, columnPosition, chipColor))
{
gameOver = true;
System.out.print(chipColor + " won! game over.");
}
else if(checkTie(connectFourGrid))
{
gameOver = true;
System.out.print("It's a tie!");
}
}
}
input.close();
}
/**
* This is where the check for a tie takes place
*/
public static boolean checkTie(char[][] connectFourGrid)
{
for(int i = 0; i < connectFourGrid[0].length; i++)
if(connectFourGrid[0][i] == 0)
return false;
return true;
/**
* This is where the gameStatus will update if 4 x's or o's are found horizontally, vertically or diagonally
*/
}
public static boolean gameStatus(char[][] connectFourGrid, int columnPosition, char chipColor)
{
int rowPosition = 0;
for (int i = 0; i < connectFourGrid.length; i++)
if (connectFourGrid[i][columnPosition] != 0)
{
rowPosition = 1;
break;
}
if(checkColumn(connectFourGrid, columnPosition, chipColor,rowPosition))
return true;
if(checkRow(connectFourGrid, columnPosition, chipColor,rowPosition))
return true;
if(checkMajorDiagonal(connectFourGrid, columnPosition, chipColor,rowPosition))
return true;
if(checkMinorDiagonal(connectFourGrid, columnPosition, chipColor,rowPosition))
return true;
return false;
}
/*
* checks for four chips in minor diagonal
*/
public static boolean checkMinorDiagonal(char[][] connectFourGrid, int columnPosition, char chipColor, int rowPosition)
{
int chipCounter = 1;
for(int i = rowPosition + 1, j = columnPosition - 1; i < connectFourGrid.length && j>= 0; i++, j--)
if(chipColor == connectFourGrid[i][j])
chipCounter++;
else
break;
if (chipCounter >= 4)
return true;
for(int i = rowPosition - 1, j = columnPosition + 1; i >= 0 && j < connectFourGrid[0].length; i--, j++)
if (chipColor == connectFourGrid[i][j])
chipCounter++;
else
break;
if (chipCounter >= 4)
return true;
return false;
}
/*
* checks for four chips in major diagonal
*/
public static boolean checkMajorDiagonal(char[][] connectFourGrid, int columnPosition, char chipColor, int rowPosition)
{
int chipCounter = 1;
for(int i = rowPosition - 1, j = columnPosition - 1; i < 0 && j >= 0; i--, j--)
if (chipColor == connectFourGrid[i][j])
chipCounter++;
else
break;
if (chipCounter >= 4)
return true;
for(int i = rowPosition + 1, j = columnPosition + 1; i < connectFourGrid.length && j < connectFourGrid[0].length; i++, j++)
if (chipColor == connectFourGrid[i][j])
chipCounter++;
else
break;
if (chipCounter >= 4)
return true;
return false;
}
/*
* checks for four chips in a row
*/
public static boolean checkRow(char[][] connectFourGrid, int columnPosition, char chipColor, int rowPosition)
{
int chipCounter = 1;
for (int i = columnPosition - 1; i >= 0; i--)
if (chipColor == connectFourGrid[rowPosition][i])
chipCounter++;
else
break;
if (chipCounter >= 4)
return true;
for(int i = columnPosition + 1; i < connectFourGrid[0].length; i++)
if (chipColor == connectFourGrid[rowPosition][i])
chipCounter++;
else
break;
if (chipCounter >= 4)
return true;
return false;
}
/*
* checks for four chips in a column
*/
public static boolean checkColumn(char[][] connectFourGrid, int columnPosition, char chipColor, int rowPosition)
{
int chipCounter = 1;
if ((rowPosition + 4) <=6)
for (int i = rowPosition + 1; i <= (rowPosition + 3); i++)
if(chipColor == connectFourGrid[i][columnPosition])
chipCounter++;
else
break;
if(chipCounter == 4)
return true;
return false;
}
/**
* Drops a chip to bottom of column picked, if the column is full asks to place again
*/
public static boolean dropChip(char[][] connectFourGrid, int columnPosition, char chipColor)
{
for (int i = connectFourGrid.length - 1; i >= 0; i--)
if (connectFourGrid[i][columnPosition] == 0)
{
connectFourGrid[i][columnPosition] = chipColor;
return false;
}
System.out.println("Column is full, " + chipColor + " player, try again");
return true;
}
//Displays the grid
public static void displayGrid(char[][] connectFourGrid)
{
for (int i = 0; i < connectFourGrid.length; i++)
{
for(int j = 0; j < connectFourGrid[i].length; j++)
System.out.print("|" + connectFourGrid[i][j]);
System.out.println("|");
}
for(int i = 0; i < connectFourGrid.length; i++);
System.out.print("---");
System.out.println();
}
}
int rowPosition = 0;
for (int i = 0; i < connectFourGrid.length; i++)
if (connectFourGrid[i][columnPosition] != 0)
{
rowPosition = 1;
break;
}
我已经解决了这个问题。谢谢你指出我把事情搞砸了,我所需要做的就是把rowPosition设置为“I”,而不是1。