java - 井字游戏获胜逻辑 Java
问题描述
我正在编写一个包含两个文件的井字游戏,一个用于 TTT 对象,另一个用于运行实际游戏的主要方法。除了我的获胜/平局方法外,一切都运行良好。我正在从所有可能的获胜线中创建字符串,这些线也正常工作。但是,我返回“X”或“O”的逻辑无法正常运行。在我的游戏主要方法中,我可以打印一个获胜组合,它会成功打印一个“XXX”或“OOO”,但该方法没有正确识别它并将其用于条件。
伪获胜/平局方法:
从每个获胜组合创建 8 个不同的字符串
检查它们中的任何一个是否等于“XXX”或“OOO”
如果是,则返回“X”或“O”
public class TicTacToe {
//Enum data type for board states
public enum states {
X,
O,
EMPTY;
}
//2D Array for board
private static states[][] board = new states[3][3];
//Method constructor
public TicTacToe() {
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 3; j++) {
board[i][j] = states.EMPTY;
}
}
}
//Method to display the board in console
public void displayBoard() {
System.out.printf("%5s %5s %5s\n\n%5s %5s %5s\n\n%5s %5s %5s\n\n",
board[0][0], board[0][1], board[0][2],
board[1][0], board[1][1], board[1][2],
board[2][0], board[2][1], board[2][2]);
}
//Method to set a board position to X or O
public void setBoard(int row, int column, states i) {
if (board[row][column] == states.EMPTY) {
board[row][column] = i;
}
else {
throw new RuntimeException();
}
//Method to check for a winner or draw
public String winDraw() {
String row1 = board[0][0].toString() + board[0][1].toString() + board[0][2].toString();
String row2 = board[1][0].toString() + board[1][1].toString() + board[1][2].toString();
String row3 = board[2][0].toString() + board[2][1].toString() + board[2][2].toString();
String col1 = board[0][0].toString() + board[1][0].toString() + board[2][0].toString();
String col2 = board[0][1].toString() + board[1][1].toString() + board[2][1].toString();
String col3 = board[0][2].toString() + board[1][2].toString() + board[2][2].toString();
String diag = board[0][0].toString() + board[1][1].toString() + board[2][2].toString();
String antiDiag = board[0][2].toString() + board[1][1].toString() + board[2][0].toString();
if(row1 == "XXX" || row2 == "XXX" || row3 == "XXX" || col1 == "XXX" || col2 == "XXX" || col3 == "XXX" || diag == "XXX" || antiDiag == "XXX") {
return "X";
}
else if(row1 == "OOO" || row2 == "OOO" || row3 == "OOO" || col1 == "OOO" || col2 == "OOO" || col3 == "OOO" || diag == "OOO" || antiDiag == "OOO") {
return "O";
}
else {
return null;
}
}
}
解决方案
推荐阅读
- android - 以横向反应导航打开屏幕
- google-app-engine - 无法为 Java GCP App Engine 项目提供自定义 app.yaml 文件
- visual-studio-code - 单击“解决保存冲突”上的错误按钮后,我可以在 VSCode 上恢复文件的不同版本吗?
- javascript - 使用 StrictTemplate 分配模板引用变量?
- git - 如何管理两个链接的 GitHub 存储库
- database - springboot中如何互换配置数据库
- layer - 删除和编辑 acrobat 图层
- node.js - 如何通过 ARN 获取 AWS 资源的标签?
- runtime-error - 为什么我的简单代码在 spyder 上运行良好,但在 SPOJ 的在线 IDE 上运行良好?
- c++ - 如何分配作为单例类的数据成员的指针?