![](/img/trans.png)
[英]How to pass a 2D Array from one class to be used in another as a parameter so that they can be sorted into 2 ArrayLists
[英]How to pass a private 2d enum with array values to another class?
我创建了一个Map变量,该变量是一个2枚举枚举(某些具有常数类型的图块),本质上是在尝试使它变色,因此我可以以多种方式呈现地图,而不必将特定的render方法添加到map类中,而将其添加到另一个类。
我现在有一个简单的控制台打印命令,但是当我使用嵌套循环遍历坐标时,我无法遍历数组值(以打印),但是可以使用方法(getHeight(),getWidth等)。 (来自map类)),因为它们是公共的,但不是数组值,因为map在TiledMap类中是私有的。
我尝试使用'this',但我认为我没有正确使用它,我不明白如何使用'this'传递地图数组,我已经在网上检查了'this'的示例,但我尚未找到任何解决方案。 我假设自从将地图传递到渲染器以来,我也可以访问数组值,但不能。
问题:“表达式的类型必须是数组类型,但已解析为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);
}
任何相关的材料或指针,将不胜感激,谢谢。
在tiledMap类中,您不必使用this.mMap = mMap
因为您尚未在构造函数中创建局部变量。您只是使mMap等于其自身,而是在for循环中将值传递给它。仅当u具有与全局变量同名的局部变量时,才应使用this
。 在ConsoleRenderer类中,您将传递一个TiledMap类而不是一个数组。您必须有一个getter来访问您的数组mMap
。但是,当您传递名为Map的TiledMap时,您将其用作数组,您不能像将其用作数组一样数组,因为它只是一个类,而不是类的数组。 为您的数组mMap创建一个getter函数,如下所示:
public TerrainType[][] getTerrainType(){
return mMap;
}
然后,在consoleRenderer中,您可以执行以下操作:
map.getTerrainType[][]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.