我目前正在制作地形生成器,在一个类中一切正常,但我将扩展我的应用程序。
目前我有一个 JFrame 类,它包含所有内容、生成地形、绘制地形、查找位置等。
我想添加另一个将生成地形的类,但是当我创建这个类时,我需要访问主 JFrame 类中的字段,当我这样做时,我得到一个堆栈溢出错误 - 这是我的代码。
public class Simulator extends Applet
{
//fields
public Simulator()
{
grid = new int[100][100];
inhabGrid = new boolean[grid.length][grid.length];
gridSize = grid.length - 1;
dist = grid.length;
TerrainGenerator gen = new TerrainGenerator();
setSize(dist,dist);
seedGrid();
findInhabLocation();
printGridToConsole();
}
public void paint(Graphics g)
{
//panting the grid
}
public void seedGrid()
{
//seeding
}
public boolean generateTerrain(int x1,int y1, int x2, int y2)
{
//terrain generator
}
public boolean mouseUp(Event evt, int x, int y)
{
seedGrid(); //Create a new map
findInhabLocation();
repaint();
printGridToConsole();
return true;
}
public boolean keyEvents(Event evt, int x, int y)
{
seedGrid(); //Create a new map
findInhabLocation();
repaint();
printGridToConsole();
return true;
}
public void findInhabLocation()
{
//find best inhabitant location
}
public int locateWater(int x, int y)
{
//finding closest water
}
public int locateJungle(int x, int y)
{
//finding closest jungle
}
}
}
这在它自己的类中工作正常,但是当我创建一个类时,例如:
public class TerrainGenerator
{
Simulator sim = new Simulator();
}
我知道这与构造函数有关,而且我正在做一些愚蠢的事情,将这个应用程序分成类的最佳方法是什么,例如地形生成器、居民等
例如,我希望能够从“TerrainGenerator”类中调用一个方法并调用即 terrainGenerator.generateTerrain