我已經創建了一個2d枚舉(具有常量類型的某些圖塊)的地圖變量,基本上我正在嘗試使它能夠以多種方式呈現地圖,而無需將特定渲染方法添加到地圖類中,但進入另一個班級。如何將數組值的私有2d枚舉傳遞給另一個類?
我有一個簡單的控制檯打印命令,但當我使用嵌套循環來通過座標我不能通過數組值(打印),但我可以使用方法(getHeight() ,getWidth等),因爲它們是公開的,而不是數組值,因爲地圖在TiledMap類中是私有的。
我試過使用'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);
}
任何相關的材料或指針將不勝感激,謝謝。
你的變量'map'在'ConsonleRenderer#渲染()'是類型'TiledMap'。 'TiledMap'不是像'TerrainType [] []''這樣的數組類型。你混淆了這兩個嗎? – Christopher 2015-03-02 10:24:24
是的,我想他們是同一件事,謝謝。 – Iain 2015-03-02 10:35:24