如果标题不合适,请道歉,这样做有什么问题。
方案: 我在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中的所有项目都是对象,在画布上表示为彩色圆圈。
答案 0 :(得分:1)
如果您问我如何修改其他类的private
字段:那么您需要做的就是在Space_Object
或Planet
类中添加setter方法,例如:
public class Planet {
...
public setCoor(int x, int y) {
this.xPosition = x;
this.yPosition = y;
}
}
现在,您可以从Star
课程中调用此方法:planet.setCoor(x, y)
如果您希望只能从同一个包的类访问此方法,请删除public
。
答案 1 :(得分:0)
这里有很多问题。
A1。你需要xposition来设置它的方法。 A2A。我们的太阳系甚至是星系都没有x和y。如果你要模拟旋转星系和/或扩展宇宙(在这种情况下星系也会在3d空间中相互移动),那么恒星位置(或任何物体的位置)都不固定。 A2B。如果你要使用不动的恒星和星系,那么恒星(不是它的系统)会有x和y。 A2C。一颗行星在开普勒轨道上围绕其恒星旋转,偏心率大于0且小于1.要计算路径,除了恒星的位置外,还需要轨道的轴信息。维基百科将有方程式。 A2D。除非你计划拥有不稳定轨道的行星,否则没有行星的起始位置。 (或者是在它们经过的行星的每次旋转中都会修改它们的轨道的彗星)。具有稳定轨道的行星始终遵循并且将永远遵循相同的路径(不是真的,但是......)您可以将行星放置在轨道上的任何点并给它适当的初始速度(=速度+方向)并观察它。 A3。不言自明的
听起来像一个有趣的项目,特别是你在屏幕上制作动画模型。在这种情况下,您还需要决定系统的时钟速度;每秒模拟时间实时传递的天数。此外,您还需要选择刷新频率;你多久更新一次屏幕。