繁体   English   中英

如何将带有数组值的私有2d枚举传递给另一个类?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM