需要一个Game(类似于井字游戏)算法



首先,我是Java编程的初学者。我想申请学校项目。我决定做一个棋盘游戏!非常直率。!【董事会】[1]这是棋盘,有两个玩家(都是人类)。第一个球员(x)将在棋盘上的任何地方移动。他有9个名额。

游戏的动机是将所有三个代币对角、水平或垂直地放在一行。

【获胜条件】[2]我想要算法来检查获胜者,以及如何在frm用户移动时选择值。我浏览了很多tic-tac-toh算法,但我不知道它们出了什么问题。![可能的移动][3]请帮忙!!

既然是家庭作业,我不想只给你一个答案。此外,你也不清楚自己在挣扎什么,所以我希望这适用于你遇到的问题。编辑你的答案,使其更加清晰和/或留下评论,以便所有回答过的人都可以改进他们的答案,更有效地满足你的需求

您可以使用二维阵列来存储电路板。在Java中,创建3x3二维数组(例如,使用char类型来存储XO)的语法如下:

char[][] board = new char[3][3];

在Tic-Tac Toe中,有8种可能的棋盘状态表示玩家赢得了游戏(下面用X标记的动作):

 (1)      (2)      (3)      (4)      (5)      (6)      (7)      (8)
X X X    # # #    # # #    X # #    # X #    # # X    X # #    # # X
# # #    X X X    # # #    X # #    # X #    # # X    # X #    # X #
# # #    # # #    X X X    X # #    # X #    # # X    # # X    X # #

记住数组索引从0开始(由于我们有一个3x3 2D数组,所以会上升到2),这转化为以下一组条件:

(1): board[0][0] == board[0][1] && board[0][1] == board[0][2]
(2): board[1][0] == board[1][1] && board[1][1] == board[1][2]
(3): board[2][0] == board[2][1] && board[2][1] == board[2][2]
(4): board[0][0] == board[1][0] && board[1][0] == board[2][0]
(5): board[0][1] == board[1][1] && board[1][1] == board[2][1]
(6): board[0][2] == board[1][2] && board[1][2] == board[2][2]
(7): board[0][0] == board[1][1] && board[1][1] == board[2][2]
(8): board[0][2] == board[1][1] && board[1][1] == board[2][0]

如果这些单元格中的任何一个相等(并且不是空白),则有人(XO,取决于谁占据这些单元格)赢得了游戏。您可能会使用循环来使代码更加紧凑。

最新更新