Tic Tac Toe游戏的Java ArrayList

Tic Tac Toe游戏的Java ArrayList,java,tic-tac-toe,Java,Tic Tac Toe,你好,我从Java开始,我需要一些帮助。我目前正在做一个井字游戏项目,我被卡住了。在游戏开始时,我希望游戏板上的所有9个点都有一个“”以便显示为空,但当玩家选择下一步时,我希望他们使用以下格式:A1、A2、A3、B1等。如何将我的arrayList与这些字符串链接 示例A1为=0,A2=1。。。。C3=8 public static void printGameBoard() { System.out.println(" A B C"); System.

你好,我从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();
}
publicstaticvoid打印游戏板(){
系统输出打印项次(“A B C”);
System.out.println(“\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu”);
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”);
公共静态整型游戏(){
木板尺寸=9;
board=新的ArrayList();
对于(int i=0;i
试试这个

 for(int i = 0; i < boardSize; i++) {
   board.add(Character.valueOf(i+1));
}
for(int i=0;i
试试这个

 for(int i = 0; i < boardSize; i++) {
   board.add(Character.valueOf(i+1));
}
for(int i=0;i
因此,您的
ArrayList
是一个线性容器,包含0-n个元素。您的网格是一个二维容器,允许元素通过
y
x
reference进行引用。您需要一种能够在这些元素之间进行转换的方法

您知道网格是一个
3x3
矩阵(3行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';
if (row >= 0 && row < 3 && col >= 0 && col < 3) {
    int index = (row * 3) + col;
    board.set(index, "x");
}
现在,您需要对输入进行一些验证,以确保值在范围内

但是那场争吵呢

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

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

所以,你可以把它放在一起,比如

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

因此,您的
ArrayList
是一个线性容器,包含0-n个元素。您的网格是一个二维容器,允许通过
y
x
x
reference引用元素。您需要一种能够在这些元素之间转换的方法

您知道网格是一个
3x3
矩阵(3行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';
if (row >= 0 && row < 3 && col >= 0 && col < 3) {
    int index = (row * 3) + col;
    board.set(index, "x");
}
现在,您需要对输入进行一些验证,以确保值在范围内

但是那场争吵呢

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

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

所以,你可以把它放在一起,比如

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