gpt4 book ai didi

Java - 保存值以供不同函数使用

转载 作者:太空宇宙 更新时间:2023-11-04 15:24:28 25 4
gpt4 key购买 nike

所以这是一个愚蠢的初学者的问题。

我编写了一个函数来检查特定的游戏 Action 是否合法(黑白棋)。该函数只能返回 boolean true/false 值。

后来,在另一个函数中,我实际上进行了移动(makeMove 函数)。在此函数中,在进行移动之前,我调用 isLegal 函数以确保移动合法。

现在,当 isLegal 函数确定移动合法时,它将帮助我保存导致该决定的特定信息,并在 makeMove 函数中使用它。我不知道该怎么做。我尝试编写一个函数来存储相关数据,然后将其发送回来,但是这里存在一个明显的范围问题。

这是来自 isLegal 的相关代码:

else if(board[k][l]==player){relevantDirection=false; isLegal=true; ReversiPlay.saveLegalMove(direction, k, l);}

然后是有问题的保存函数:

 public static int[] saveLegalMove(int direction, int row, int column){ 

if(direction==0){ //get info from function
return legalMoveData;
}
else{ //save legal move data
int[] legalMoveData = new int[3];
legalMoveData[0]= direction;
legalMoveData[1]= row;
legalMoveData[2]= column;
return null;
}
}

最后,我尝试调用存储的数据:

int[] getSavedInfo = ReversiPlay.saveLegalMove(0, 0, 0);

我确信有一种非常简单的方法可以拉动变量direction+k+l...有人吗?

谢谢!

编辑:这是一个更清晰的示例:

    public static boolean A(int a){
...calculations...
int x = [value]
int y = [value]
return false;}
public static void B(int a){
...calculations...
boolean h = A(3);
[here I'd like to know what x,y were]
}

最佳答案

 else {  //save legal move data
int[] legalMoveData = new int[3];
legalMoveData[0]= direction;
legalMoveData[1]= row;
legalMoveData[2]= column;
return null;
}

这部分不保存任何内容。它将值存储到局部变量并返回 null

一种方法是创建一个包含您需要的数据的 Move 对象:

public class Move {

private int direction;
private int row;
private int column;

...
}

您的 isLegal 方法只会告诉您此举是否合法。然后您可以使用相同的 Move 实例进行移动。

if(ReversiPlay.isLegalMove(move)) {
ReversiPlay.makeMove(move);
}

无需显式保存该移动;您已在 Move 对象实例中拥有该信息。

更新

根据您的编辑,也许最好从 A 返回一个对象而不是 boolean:

public static boolean A(int a) {
...calculations...
int x = [value]
int y = [value]
return new MyObject(x, y, false);
}

...

MyObject myObject = A(someValue);

然后您可以查询myObject来查看标志的值是什么。

更新

您提到您不允许使用对象。如果是这样,您可以将该逻辑提取到其自己的方法中,然后调用它,而不是进行相同的计算。这样你就不必重复逻辑。

关于Java - 保存值以供不同函数使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20004638/

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