这是我第一次访问Stackoverflow,之前可能会问过这个问题,但是我找到这些线程时遇到了一些麻烦。我目前正在开发Tic Tac Toe Android游戏,这是我制作应用程序的第一个项目。
案例是我正在我的PlayState
班上工作,游戏的主要部分将在那里进行。 PlayState
是您在菜单中选择它时显示的实例。这就是我在PlayState
:
因为我有PlayState
作为实例,不想有任何静态方法。我还创建了一个EndMechanism
- 类,它是作为PlayState
中的实例创建的。该课程检查Wins / Lose / Draw。我想这样做的方法是让每个Tile(3x3)获得一个由循环中的变量标记的Character(X或O)。
boardTileMark[row][col] = 'x';
我已成功使用Character
类:
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
以及一个字母' x'或者' o' o在boardTileMark
上给出了平行线。
现在是问题所在:
由于我想检查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';
}
}
}
}
如果有什么令人困惑的事情请告诉我,我会更好地描述它。谢谢您的时间:))
PS:我试图让这个游戏尽可能坚固,所以我可以将它用于另一个项目。因此,保持游戏本身和同一级别的胜利检查不是我打算做的。答案 0 :(得分:0)
我认为你的描述过于宽泛,所以这个问题有点不清楚,并且包含了许多对你的问题不重要的信息,从而减少了获得答案的机会。
正如我所理解的那样,你的整个描述可以简化为:&#34;我有一个类PlayState
,这个类包含二维标记数组和一个类EndMechanism
的实例。类EndMechanism
的实例需要访问来自PlayState1
类的二维标记数组。&#34;
如果它是对的那么你真正的问题是如何访问外类的变量。这样的问题在Java中很流行,并且在其他问题中已经有了答案,例如:
access variables of outer class in Java
所以我将此问题标记为重复,但我仍会提供答案。
但在你的情况下,我不会仅为检查结束条件创建一个新类(EndMechanism
),但我会将检查结束条件的函数放在PlayState
类中。检查结束条件与markBoardTiles
函数的功能类似,因此它应该在同一个类中。如果它在同一个类中,您将不必处理所描述的问题。通常,如果某些课程,我们说X
仅使用课程Y
中的变量而课程X
具有与Y
相同的功能,则函数来自{{} 1}}应该在班级X
。
但是如果你想继续使用当前的方法,你应该在你的Y
类中调用PlayState.this.markBoardTiles
,然后你就可以访问markBoardTiles变量了。