从另一个类调用方法来获取x和y问题

时间:2016-03-12 02:02:13

标签: java bluej

如果标题不合适,请道歉,这样做有什么问题。

方案: 我在java中有一个宇宙类型的项目,你可以在宇宙中找到不同类型的东西(星星,行星,彗星等)。

这是我大学课程的一部分,我被困在一部分

我有一个名为Space_Object的类,它是一个超类,并且在Universe中找到的所有内容都会继承它。超类有变量,如xPosition,yPosition。

我目前仍在努力让行星围绕明星进行环绕。我试图得到一颗恒星的x,y坐标,以便行星围绕它运行(可以有多个行星和恒星)。现在,我正在传递这颗恒星,即每当制造一颗新行星时,行星将作为一个场围绕轨道运行。

我在Planet中创建了getter来检索Star的x,y(可以工作)。我被困在如何使用x和y来改变行星的起点。这是我添加到Universe类的内容:

public void setCoordsOfPlanet(Planet planetObj)
{
    planetObj.xPosition = planetObj.getSolarSystemX();
}

这给了我一个错误:

  

xPosition在Space_Object

中具有私有访问权限

我不允许将任何字段公开。

星球类:

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:Universe中的所有项目都是对象,在画布上表示为彩色圆圈。

2 个答案:

答案 0 :(得分:1)

如果您问我如何修改其他类的private字段:那么您需要做的就是在Space_ObjectPlanet类中添加setter方法,例如:

public class Planet {
...
public setCoor(int x, int y) {
    this.xPosition = x;
    this.yPosition = y;
}
}

现在,您可以从Star课程中调用此方法:planet.setCoor(x, y)

如果您希望只能从同一个包的类访问此方法,请删除public

答案 1 :(得分:0)

这里有很多问题。

  1. 编程的东西
  2. 行星旋转模型
  3. 使用'太阳系'应该是'星系':-)太阳系是我们的星系;那是因为我们的明星是“Sol”
  4. A1。你需要xposition来设置它的方法。 A2A。我们的太阳系甚至是星系都没有x和y。如果你要模拟旋转星系和/或扩展宇宙(在这种情况下星系也会在3d空间中相互移动),那么恒星位置(或任何物体的位置)都不固定。 A2B。如果你要使用不动的恒星和星系,那么恒星(不是它的系统)会有x和y。 A2C。一颗行星在开普勒轨道上围绕其恒星旋转,偏心率大于0且小于1.要计算路径,除了恒星的位置外,还需要轨道的轴信息。维基百科将有方程式。 A2D。除非你计划拥有不稳定轨道的行星,否则没有行星的起始位置。 (或者是在它们经过的行星的每次旋转中都会修改它们的轨道的彗星)。具有稳定轨道的行星始终遵循并且将永远遵循相同的路径(不是真的,但是......)您可以将行星放置在轨道上的任何点并给它适当的初始速度(=速度+方向)并观察它。 A3。不言自明的

    听起来像一个有趣的项目,特别是你在屏幕上制作动画模型。在这种情况下,您还需要决定系统的时钟速度;每秒模拟时间实时传递的天数。此外,您还需要选择刷新频率;你多久更新一次屏幕。