gpt4 book ai didi

用于 Tic Tac Toe 游戏的 Java ArrayList

转载 作者:行者123 更新时间:2023-12-02 01:52:16 24 4
gpt4 key购买 nike

您好,我正在开始使用 Java,我需要一些帮助。我目前正在开发一个井字棋游戏项目,但我陷入了困境。在游戏开始时,我希望游戏板上的所有 9 个点都有一个“”,以便游戏板显示为空,但是当玩家选择下一步行动时,我希望他们使用以下格式:A1、A2、A3、 B1 等。如何将我的 arrayList 与这些字符串链接起来?

示例 A1 = 0,A2 = 1...C3=8

    public static void printGameBoard() {
System.out.println(" A B C");
System.out.println(" ______________");
System.out.println(" | | | |");
System.out.println("1 |" + board.get(0) + " | " + board.get(1) + " | " + board.get(2) + " | ");
System.out.println(" |----|----|----|");
System.out.println("2 |" + board.get(3) + " | " + board.get(4) + " | " + board.get(5) + " | ");
System.out.println(" |----|----|----|");
System.out.println("3 |" + board.get(6) + " | " + board.get(7) + " | " + board.get(8) + " | ");
System.out.println(" |____|____|____|\n");

public static int gameplay() {
boardSize = 9;
board = new ArrayList();

for(int i = 0; i < boardSize; i++) {
board.add(Character.valueOf(' '));
}

return playerTurn();
}

最佳答案

所以,ArrayList是一个线性容器,包含0-n个元素。您的网格是一个二维容器,允许通过 yxx 引用来引用元素。您需要一种能够在这些之间进行转换的方法。

您知道网格是一个 3x3 矩阵(3 行 x 3 列),因此一些简单的数学知识会派上用场。

A 引用第一列,因此您的索引将为 (y - 1) + (0 * 3) (请记住,Java 的索引为 0)B 引用第二列,因此您的索引将为 (y - 1) + (1 * 3)并且 C 引用第三列,因此您的索引将为 (y - 1) + (2 * 3)

现在,您需要的是将字母转换为数字,令人惊讶的是,这实际上非常简单......

String cell = "A1";
int col = cell.charAt(0) - 'A';

将返回0

一个稍微更安全的解决方案是从您的操作中完全删除案例,例如......

int col = cell.toLowerCase().charAt(0) - 'a';

现在,您需要对输入进行一些验证,以确保值在范围内。

但是行呢?

String cell = "A1";
int col = cell.toLowerCase().charAt(0) - 'a';
int row = Integer.parseInt(cell.substring(1)) - 1;

System.out.println(row + "x" + col);

简单:)

所以,你可以把它组合起来,比如......

if (row >= 0 && row < 3 && col >= 0 && col < 3) {
int index = (row * 3) + col;
board.set(index, "x");
}

或者类似的东西

因为我把数学全部倒过来了......

String[] cols = new String[]{"A", "B", "C"};
for (int rowIndex = 1; rowIndex < 4; rowIndex++) {
for (String colValue : cols) {
String cell = colValue + rowIndex;
int col = cell.toLowerCase().charAt(0) - 'a';
int row = Integer.parseInt(cell.substring(1)) - 1;
int index = (row * 3) + col;
System.out.println("Cell = " + cell + "; index = " + index);
}
}

输出

Cell = A1; index = 0
Cell = B1; index = 1
Cell = C1; index = 2
Cell = A2; index = 3
Cell = B2; index = 4
Cell = C2; index = 5
Cell = A3; index = 6
Cell = B3; index = 7
Cell = C3; index = 8

关于用于 Tic Tac Toe 游戏的 Java ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52807081/

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