我正在尝试使用同一个类创建至少两个独立的对象。这意味着我希望他们每个人都使用相同的类,但独立使用它中的变量。我不确定这是否可能,但这就是我在这里的原因。
两个骨架(skeleton1和skeleton2)是我想要彼此独立的两个对象。
@Override
public void render(GameContainer gc, StateBasedGame gm, Graphics g)
throws SlickException {
background.draw(0, 0, Constants.WIN_WIDTH, Constants.WIN_HEIGHT);
g.drawImage(ccb, mkX, mkY);
Skeleton skeleton1 = new Skeleton(g, gm);
Skeleton skeleton2 = new Skeleton(g, gm);
score = new DeathScreenButton(scoreCounter, (Constants.WIN_WIDTH / 2) / 2, 0, g, Color.transparent);
}
更具体地说,我希望他们的x和y轴在这里显示独立(它们是sX和sY):
public class Skeleton {
private Graphics g;
private StateBasedGame gm;
private int mkX = InGame.getmkX();
private int mkY = InGame.getmkY();
// This makes them spawn on each other :(
// "static" prevents them from popping around the screen
private static int sX = (int)(Math.random() * Constants.WIN_WIDTH) + 1;
private static int sY = (int)(Math.random() * Constants.WIN_HEIGHT) + 1;
private Image skele;
public Skeleton (Graphics g, StateBasedGame gm) {
this.g = g;
this.gm = gm;
try {
init();
} catch (SlickException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
render();
try {
update();
} catch (SlickException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
答案 0 :(得分:0)
你的骷髅已经独立了。 面向对象的编程目的之一是类实例。这样,同一个类的两个实例可能具有相同的属性,但它们永远不会相同。 它可能在开始时有点混乱,但目标是开发可重用的代码,然后你可以实例化1..n Skeletons,它们将是独立的。
Skeleton skel1 = new Skeleton(Graphics g, StateBasedGame gm);
希望它有用。 谢谢。
答案 1 :(得分:0)
写入/覆盖update
方法,如果您还没有。用这种方法更新你的位置。
将变量sX
和sY
的初始化放在构造函数中。
删除static
。通过标记sX
和sY
static
,您的类的所有实例将始终共享这些值,因此您永远不会拥有具有不同坐标的Skeletons。如果更改一个实例的值,则为所有实例更改它。
同一个班级,但独立使用其中的变量
这基本上意味着:我想使用实例变量。标记为static
的变量是 class 变量。