我有一个诱人的arraylist,我想随机移动。无论我做什么,他们都不会动。这是我的女班:
public class Female extends Entity {
static int femaleX = 0;
static int femaleY = 0;
double walkSpeed = .1f;
Random rand = new Random();
int random;
int dir;
Player player;
public Female(int posX, int posY) {
super(posX, posY);
}
public void update() {
posX += femaleX;
posY += femaleY;
moveFemale();
}
public void draw(Graphics2D g2d) {
g2d.drawImage(getFemaleImg(), posX, posY, null);
if (Player.showBounds == true) {
g2d.draw(getBounds());
}
}
public Image getFemaleImg() {
ImageIcon ic = new ImageIcon("res/female.png");
return ic.getImage();
}
public Rectangle getBounds() {
return new Rectangle(posX, posY, getFemaleImg().getHeight(null),
getFemaleImg().getWidth(null));
}
public void moveFemale() {
random = rand.nextInt(3);
System.out.println(random);
if (random == 0) {
dir = 0;
posX -= (int) walkSpeed;
}
}
}
以下是我如何更新主班的女班:
public void actionPerformed(ActionEvent ae) {
player.update();
for(int i = 0; i < females.size(); i++){
Female tempFemale = females.get(i);
tempFemale.update();
}
repaint();
}
如果我这样做(在女性更新方法中):
public void update() {
posX += femaleX;
posY += femaleY;
posX -= walkSpeed;
}
角色移动没有问题。这是为什么?
答案 0 :(得分:1)
因为femaleX
和femaleY
为零。将它们添加到posX
和posY
不会更改这些变量,但添加非零变量(如walkSpeed)会更改。
编辑:对于随机性问题,我不得不在黑暗中采取刺,因为我看不到你的所有代码,但也许你没有调用你的moveFemale方法,这是随机性的运动方法。更新方法完全是确定性的。如果你想让女性随机移动,可以调用moveFemale方法或者将随机性添加到更新方法中。
这是面向对象编程的一般规则的一个例子:有两个方法(update和moveFemale)似乎做了相同或非常相似的事情是很糟糕的。
答案 1 :(得分:0)