Java—如何使实例的实例在主实例中拾取变量?

Java—如何使实例的实例在主实例中拾取变量?,java,arrays,character,instance,tic-tac-toe,Java,Arrays,Character,Instance,Tic Tac Toe,这是我第一次在Stackoverflow上讨论这个问题,以前可能有人问过这个问题,但我很容易找到这些线程。我目前正在开发一款Tic-Tac-Toe Android游戏,这是我制作应用程序的第一个项目 情况是,我正在编写我的PlayState-类,游戏的主要部分将在该类中进行播放状态是在菜单中选择它时出现的一个实例。这就是我在PlayState中所做的: 作为一个实例,我不想使用任何静态方法。我还创建了一个EndMechanism-类,它作为PlayState中的一个实例创建。那个班检查赢/输/平

这是我第一次在Stackoverflow上讨论这个问题,以前可能有人问过这个问题,但我很容易找到这些线程。我目前正在开发一款Tic-Tac-Toe Android游戏,这是我制作应用程序的第一个项目

情况是,我正在编写我的
PlayState
-类,游戏的主要部分将在该类中进行<代码>播放状态是在菜单中选择它时出现的一个实例。这就是我在
PlayState
中所做的:

作为一个实例,我不想使用任何静态方法。我还创建了一个
EndMechanism
-类,它作为
PlayState
中的一个实例创建。那个班检查赢/输/平。我想这样做的方式是让每个磁贴(3x3)都得到一个由循环中的变量标记的字符(X或O)

boardTileMark[row][col] = 'x';
我通过使用
字符
类成功地做到了这一点:

boardTiles = new BoardTile[3][3]; // To make the Tiles 3 by 3
boardTileMark = new Character[boardTiles.length][boardTiles[0].length];
我已经使用了真正的BoardTile的大小来制作标记的大小编号。到目前为止一切都正常了

然后是作为实例的
EndMechanism
-类:

endMech = new EndMechanism();
不需要太多细节,到目前为止,当我按下一个正方形时,它会得到一个X或O(图形)
boardTile
,并且在
boardTileMark
上并行地给出一个字符“X”或“O”

这就是现在的问题:

由于我想检查在
EndMechanism
上是赢、平还是输,我真的不知道如何将这些标记提取到
EndMechanism
,而不复制值,然后在
EndMechanism
中生成相同的代码

这就是我将boardTileMark设置为x或o的方式

public void markBoardTiles(){
        for(int row = 0;row < boardTiles.length;row++){
            for(int col = 0;col < boardTiles[0].length;col++){
                if(boardTiles[row][col].selected() && boardTiles[row][col].cross()){
                    boardTileMark[row][col] = 'x';
                }
                else if(boardTiles[row][col].selected() && boardTiles[row][col].circle()){
                    boardTileMark[row][col] = 'o';
                }
            }
        }
    }
public void markBoardTiles(){
对于(int row=0;row
如果有什么东西让人困惑,请告诉我,我会更好地描述它。感谢您抽出时间:)


PS:我正在努力使这个游戏尽可能的坚固,这样我就可以把它用于另一个项目。因此,我不打算让游戏本身和检查是否在同一个班级中获胜。

我认为你的描述太宽泛了,所以问题有点不清楚,包含了很多对你的问题不重要的信息,因此减少了获得答案的机会

据我正确理解,您的整个描述可以缩短为:“我有一个类
PlayState
,这个类包含二维标记数组和一个类
EndMechanism
的实例。类
EndMechanism
的实例需要从
PlayState1
类访问二维标记数组。”

如果它是正确的,那么您真正的问题是如何访问外部类的变量。这种问题在Java中很流行,并且在其他问题中已经有了答案,例如:

因此,我将这个问题标记为重复,但我仍将提供一个答案

但在您的情况下,我不会创建新类(
EndMechanism
)仅用于检查结束条件,但我会将检查结束条件的函数放在
PlayState
类中。检查结束条件的功能与
markBoardTiles
函数的功能类似,因此它应该在同一类中。如果它在同一类中,则不必处理所描述的问题。Generally如果某个类,比如说
X
只使用class
y
中的变量,class
X
具有与
y
相同的功能,那么
X
中的函数应该在class
y


但是,如果您想继续使用当前的方法,您应该在
EndMechanism
类中调用
PlayState.this.markBoardTiles
,这样您就可以访问markBoardTiles变量。

好的,我将在下一篇文章中记住这一点:)非常感谢您的帮助,并感谢您对新来者的帮助:)@塔拉博没问题,如果这解决了你的问题,你可以点击左边的标记接受我的回答。