簡體   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