从另一个 class 调用方法以获得 x 和 y 问题
Calling method from another class to get x and y issue
抱歉,如果标题不合适,请问我该怎么称呼它。
场景:
我在 java 有一个宇宙类型的项目,在那里你可以在宇宙中找到不同类型的东西(恒星、行星、彗星等)。
这是我大学课程的一部分,我卡在了一部分
我有一个叫做 Space_Object 的 class,它是一个超级class,宇宙中发现的所有事物都继承了它。 superclass有xPosition,yPosition.
等变量
我目前一直在努力让 行星 围绕 恒星 运行。我正在尝试获取恒星的 x,y 坐标,以便行星可以围绕它运行(可以有多个行星和恒星)。现在我正在经过行星将作为一个场围绕其运行的恒星,每当制造一个新行星时。
我在 Planet 内部创建了 getter 来检索 Star 的 x,y(有效)。我一直在思考如何使用 x 和 y 来改变地球的起点。这是我添加到 Universe class:
的内容
public void setCoordsOfPlanet(Planet planetObj)
{
planetObj.xPosition = planetObj.getSolarSystemX();
}
这给了我一个错误:
xPosition has private access in Space_Object
不允许我创建任何字段 public。
星球class:
public class Planet extends Space_Object
{
private int distanceFromStar;
private int orbitSpeed;
static Star solarSystem;
public Planet(int disFromStar, int orbSpeed, Star solSystem, int objectDiameter, Color objectColor, Universe theUniverse)
{
super(0, 0, 0, 0, objectDiameter, objectColor, theUniverse);
distanceFromStar = disFromStar;
orbitSpeed = orbSpeed;
solarSystem = solSystem;
}
public int getSolarSystemX ()
{
return solarSystem.getXPosition();
}
public int getSolarSystemY ()
{
return solarSystem.getYPosition();
}
}
以防万一,Space_Object 构造函数:
public Space_Object(int xPos, int yPos, int xVel, int yVel, int objectDiameter, Color objectColor, Universe theUniverse)
{
xPosition = xPos;
yPosition = yPos;
xSpeed = xVel;
ySpeed = yVel;
color = objectColor;
diameter = objectDiameter;
universe = theUniverse;
universeHeight = universe.getUniverseHeight();
universeWidth = universe.getUniverseWidth();
lifeTime = 1000000;
}
我是不是从完全错误的角度来看待这个问题?在过去的三个小时里,我一直在尝试改变这件事,但没有取得任何进展——感谢您的帮助。如果您需要更多代码,请告诉我。
PS:宇宙中的所有项目都是 objects 并且在 canvas.
上用色环表示
如果您问我如何修改另一个 class 的 private
字段:那么您需要做的就是在 Space_Object
中添加 setter 方法或Planet
class,例如:
public class Planet {
...
public setCoor(int x, int y) {
this.xPosition = x;
this.yPosition = y;
}
}
现在您可以从 Star
class 中调用此方法:planet.setCoor(x, y)
如果您希望此方法只能从同一包的 classes 访问,请删除 public
.
这里有多个问题。
- 编程的东西
- 行星自转模型
- 在应该 'Star System' 时使用 'Solar System' :-) 太阳系是我们的恒星系统;那是因为我们的星星是 "Sol"
A1。你需要 xposition 有一个方法来设置它。
A2a。我们的太阳系甚至恒星系统都没有 x 和 y。如果你要模拟旋转星系 and/or 膨胀的宇宙(在这种情况下,星系也在 3d space 中彼此远离,)然后恒星位置(或任何物体的位置) ) 不固定。
A2b。如果你要处理静止的恒星和星系,恒星(不是它的系统)会有一个 x 和一个 y。
A2c。行星在偏心率大于 0 且小于 1 的开普勒轨道上围绕其恒星旋转。要计算路径,除了恒星的位置之外,您还需要轨道的轴信息。维基百科将有方程式。
A2d。除非您计划拥有轨道不稳定的行星,否则没有行星的起始位置。 (或者彗星在每次经过的行星旋转时都会修改轨道)。具有稳定轨道的行星一直遵循并将永远遵循相同的路径(不是真的,但是......)你可以将行星放在轨道上的任何一点并给它适当的初始速度(=速度+方向)并观察它走. A3.不言自明
听起来是个有趣的项目,尤其是您正在为屏幕上的模型制作动画。在这种情况下,您还需要决定系统的时钟速度;模拟时间的每一秒将实时经过的天数。此外,您需要 select 您的刷新频率;你多久更新一次屏幕。
抱歉,如果标题不合适,请问我该怎么称呼它。
场景: 我在 java 有一个宇宙类型的项目,在那里你可以在宇宙中找到不同类型的东西(恒星、行星、彗星等)。
这是我大学课程的一部分,我卡在了一部分
我有一个叫做 Space_Object 的 class,它是一个超级class,宇宙中发现的所有事物都继承了它。 superclass有xPosition,yPosition.
等变量我目前一直在努力让 行星 围绕 恒星 运行。我正在尝试获取恒星的 x,y 坐标,以便行星可以围绕它运行(可以有多个行星和恒星)。现在我正在经过行星将作为一个场围绕其运行的恒星,每当制造一个新行星时。
我在 Planet 内部创建了 getter 来检索 Star 的 x,y(有效)。我一直在思考如何使用 x 和 y 来改变地球的起点。这是我添加到 Universe class:
的内容public void setCoordsOfPlanet(Planet planetObj)
{
planetObj.xPosition = planetObj.getSolarSystemX();
}
这给了我一个错误:
xPosition has private access in Space_Object
不允许我创建任何字段 public。
星球class:
public class Planet extends Space_Object
{
private int distanceFromStar;
private int orbitSpeed;
static Star solarSystem;
public Planet(int disFromStar, int orbSpeed, Star solSystem, int objectDiameter, Color objectColor, Universe theUniverse)
{
super(0, 0, 0, 0, objectDiameter, objectColor, theUniverse);
distanceFromStar = disFromStar;
orbitSpeed = orbSpeed;
solarSystem = solSystem;
}
public int getSolarSystemX ()
{
return solarSystem.getXPosition();
}
public int getSolarSystemY ()
{
return solarSystem.getYPosition();
}
}
以防万一,Space_Object 构造函数:
public Space_Object(int xPos, int yPos, int xVel, int yVel, int objectDiameter, Color objectColor, Universe theUniverse)
{
xPosition = xPos;
yPosition = yPos;
xSpeed = xVel;
ySpeed = yVel;
color = objectColor;
diameter = objectDiameter;
universe = theUniverse;
universeHeight = universe.getUniverseHeight();
universeWidth = universe.getUniverseWidth();
lifeTime = 1000000;
}
我是不是从完全错误的角度来看待这个问题?在过去的三个小时里,我一直在尝试改变这件事,但没有取得任何进展——感谢您的帮助。如果您需要更多代码,请告诉我。
PS:宇宙中的所有项目都是 objects 并且在 canvas.
上用色环表示如果您问我如何修改另一个 class 的 private
字段:那么您需要做的就是在 Space_Object
中添加 setter 方法或Planet
class,例如:
public class Planet {
...
public setCoor(int x, int y) {
this.xPosition = x;
this.yPosition = y;
}
}
现在您可以从 Star
class 中调用此方法:planet.setCoor(x, y)
如果您希望此方法只能从同一包的 classes 访问,请删除 public
.
这里有多个问题。
- 编程的东西
- 行星自转模型
- 在应该 'Star System' 时使用 'Solar System' :-) 太阳系是我们的恒星系统;那是因为我们的星星是 "Sol"
A1。你需要 xposition 有一个方法来设置它。 A2a。我们的太阳系甚至恒星系统都没有 x 和 y。如果你要模拟旋转星系 and/or 膨胀的宇宙(在这种情况下,星系也在 3d space 中彼此远离,)然后恒星位置(或任何物体的位置) ) 不固定。 A2b。如果你要处理静止的恒星和星系,恒星(不是它的系统)会有一个 x 和一个 y。 A2c。行星在偏心率大于 0 且小于 1 的开普勒轨道上围绕其恒星旋转。要计算路径,除了恒星的位置之外,您还需要轨道的轴信息。维基百科将有方程式。 A2d。除非您计划拥有轨道不稳定的行星,否则没有行星的起始位置。 (或者彗星在每次经过的行星旋转时都会修改轨道)。具有稳定轨道的行星一直遵循并将永远遵循相同的路径(不是真的,但是......)你可以将行星放在轨道上的任何一点并给它适当的初始速度(=速度+方向)并观察它走. A3.不言自明
听起来是个有趣的项目,尤其是您正在为屏幕上的模型制作动画。在这种情况下,您还需要决定系统的时钟速度;模拟时间的每一秒将实时经过的天数。此外,您需要 select 您的刷新频率;你多久更新一次屏幕。