gpt4 book ai didi

java - 随机化井字

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:06:49 26 4
gpt4 key购买 nike

有一段时间我做了一个作业,通过 eclipse 创建一个 tictactoe 程序。它工作得很好,我点击空框来放置 O,然后程序输入 X。但是,我使用了一个非常简单的代码来放置 X:

 public int putX(){
for(int i=0; i<3;i++)
for(int j = 0;j<3;j++) {
if(position[i][j]==' ') {
position[i][j]='X';
return 0;
}
}
return -1; //some error occurred. This is odd. No cells were free.
}

因此,X 只是放置在每一列的行中,向下直到下一列。有人能告诉我一个简单的方法来随机化这个程序吗?

最佳答案

我们要做的是生成一个包含所有可能点的数组,然后随机选择其中一个点。我们使用 for 循环遍历 3x3 数组中的所有点,并将有效的点添加到我们的临时数组中,然后我们选择一个随机索引,并在其中放置一个 X。

String[] list = new String[9]; // maximum 9 points
int size = 0;

for(int i = 0; i < 3; i++) {
for(int j = 0; j < 3; j++) {
if(position[i][j] == ' ') {
list[size] = "" + i + j;
size++;
}
}
}

int index = (int) (Math.random() * (size+1));
position[Integer.parseInt(list[index].charAt(0))][Integer.parseInt(list[index].charAt(1))] = 'X';

或者,我们可以将它们存储在 java.awt.Point 中,而不是将点的 x、y 坐标存储在 String 中,如下所示:

Point[] list = new Point[9]; // maximum 9 points
int size = 0;

for(int i = 0; i < 3; i++) {
for(int j = 0; j < 3; j++) {
if(position[i][j] == ' ') {
list[size] = new Point(i, j);
size++;
}
}
}

int index = (int) (Math.random() * (size+1));
position[list[index].getX()][list[index].getY()] = 'X';

如您所见,使用点的代码实际上是相同的,但我们可以直接从类中访问坐标,而不是从字符串中解析坐标。

您还应该通过检查 for 循环后 size 是否仍然为 0 来检查以确保还有一些元素。如果是这样,您可能应该返回 -1(您现有代码的作用)。否则,在整个代码结束时返回 0。

关于java - 随机化井字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20344657/

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