gpt4 book ai didi

java - TicTacToe 游戏错误检查和类

转载 作者:行者123 更新时间:2023-11-29 08:52:21 25 4
gpt4 key购买 nike

我目前正在为大学作业制作一个 TicTacToe 程序。我的板上布置了 3x3 JTextFields,每个都有一个 Action 监听器。我需要做的是创建另一个类来检查错误(例如,用户将输入一个数字或一个不是 x 或 o 的字母),他们应该得到一个对话框,说明错误,他们尝试输入的 JTextField 将返回空白。我将如何通过 try - catch - finally 方法实现错误检查?

另一个问题,我有一个GameGUI类,我也想有一个GameLogic类。我如何从 GameLogic 检查游戏是否获胜?在我的 GameLogic 中我会有类似

如果 j1, j2 和 j3 都是 x 或 o 则显示对话框“x player wins”。

最佳答案

我将尝试回答有关一般棋盘游戏的问题。您的面向对象的拆分成不同类的思想是正确的。我通常做的是让 GameLogic 包含我的游戏逻辑和验证,以及确定游戏是否结束等。

GameGUI 类将有一个 GameLogic 类型的实例变量,该变量在创建 GameGUI 类型的对象时被初始化。按照我的想法,我会让 GameLogic 用 2D 字符数组表示棋盘状态。 GameGUI 将在那里将用户的输入中继到 GameLogic,后者确定游戏是否结束。 GameLogic 应该抛出您想要澄清的类型的异常,然后 GameGUI 应该尝试使用 JText 字段中用户的输入文本更新棋盘,从 GameLogic 捕获错误(如果有),然后重新绘制根据获得的输入向用户显示的 GUI。我将在下面给出一个示例来阐明我的观点,尽管我不会提供 TicTacToe 游戏的实际实现,您可以轻松地自己完成。

public class GameLogic {
....
char[][]board;
public GameLogic() {
//initialize the board representation for game
}
public boolean gameOver() {
//determine if the game is over by checking the board 2D array
// 3 xs or os in a row, column, or diagonal should determine the game is over or if there are no more moves
}
public void move(char character, int x, int y) {
//update a certain position with a character should throw an Exception if the character is invalid or if the the character is valid but it's not the character that the user owns player1 plays with x for example but puts o.
//should also have the logic for the turns
}
...
}

public class GameGUI {
.....
GameLogic engine;
public GameGUI() {
engine = new GameLogic();
}

public void actionPerformed(ActionEvent e) {
// here you would get the co-ordinates of the clicked JTextButton
// then call the method move on the engine instance
try {
engine.move(character, x, y);
} catch(Exception e) {
//display the validation for the error that happened
}
//repaint the representation from the engine to be displayed on the GUI Frame that you are using
}
...
}

还有一件事是,我会将 JTextFields 声明为 JTextFields 的二维数组,而不是作为单独的实例变量来镜像 GameLogic 类中的表示。如果您使用 JButton 类而不是 JTextField 并且用户在单击的按钮上获得他正在玩的角色(如果轮到他并且之前尚未使用该按钮),您也可以一起避免验证。

关于java - TicTacToe 游戏错误检查和类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22148159/

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