gpt4 book ai didi

java - 如何将带有数组值的私有(private)二维枚举传递给另一个类?

转载 作者:行者123 更新时间:2023-12-01 11:51:15 26 4
gpt4 key购买 nike

我创建了一个 map 变量,它是一个二维枚举(某些具有常量类型的图 block ),本质上我正在尝试制作它,这样我就可以通过多种方式渲染 map ,而无需将特定的渲染方法添加到 map 类中,但进入另一个类(class)。

我现在有一个简单的控制台打印命令,但是当我使用嵌套循环来遍历坐标时,我无法遍历数组值(进行打印),但我可以使用方法(getHeight(), getWidth 等),因为它们是公共(public)的,只是不是数组值,因为 map 在 TiledMap 类中是私有(private)的。

我尝试过使用“this”,但我认为我没有正确使用它,我不明白如何使用“this”传递 map 数组,我已经在线检查了“this”的示例'但我还找不到任何解决方案。我认为自从我将 map 传递给渲染器以来,我也可以访问数组值,但我不能。

问题:“表达式的类型必须是数组类型,但它解析为 TiledMap”

public class ConsoleRenderer implements MapRenderer{
@Override
public void render(TiledMap map) {

//map = TiledMap(this); < attempt at using 'this'

for (int row = 0; row < map.getWidth(); row++) {
for (int col = 0; col < map.getHeight(); col++) {

System.out.print(map[col][row].asChar()); //Problem occurs<<<

}
System.out.println(" ");
}
}

}

Final class TiledMap implements ITiledMap{


private TerrainType[][] mMap;
private MapRenderer mRenderer;


public TiledMap(int aWidth, int aHeight, TerrainType aType, ConsoleRenderer Renderer)
{
mMap = new TerrainType [aWidth][aHeight];

for (int x=0; x<aWidth; x++)
{
for (int y=0; y<aHeight; y++)
{
mMap[x][y] = aType;
}
}

this.mMap = mMap;

//sets the method of renderer
setRenderer(Renderer);

}

任何相关 Material 或指示将不胜感激,谢谢。

最佳答案

在tiledMap类中,你不必使用this.mMap = mMap,因为你还没有在构造函数中创建局部变量。你只是让mMap等于它自己。你是在 for 循环中向其传递值。仅当您有一个与全局变量同名的局部变量时,才应该使用 this 。在 ConsoleRenderer 类中,您传递的是 TiledMap 类而不是数组。您必须有一个 getter 来访问数组 mMap。但是当您传递名为 map 的 TiledMap 时,您可以将其用作数组不只是像数组一样使用它,因为它只是一个类而不是类的数组。为数组 mMap 创建一个 getter 函数,如下所示:

public TerrainType[][] getTerrainType(){
return mMap;
}

然后在consoleRenderer中你可以这样做:

map.getTerrainType[][]

关于java - 如何将带有数组值的私有(private)二维枚举传递给另一个类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28806963/

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