Java 实体随机运动数组列表
我有一个要随机移动的实体列表。不管我做什么,他们都不会动。这是我的女同学:Java 实体随机运动数组列表,java,game-physics,Java,Game Physics,我有一个要随机移动的实体列表。不管我做什么,他们都不会动。这是我的女同学: 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) {
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();
}
角色移动没有问题。为什么会这样?因为
femaleY
和femaleY
都是零。将它们添加到posX
和posY
不会改变这些变量,但是添加一个非零变量就像walkSpeed一样
编辑:对于随机性问题,我不得不暗中尝试,因为我看不到您的所有代码,但也许您没有调用moveFemale方法,这是一种包含随机性的移动方法。更新方法是完全确定的。如果希望女性随机移动,请调用moveFemale方法或向update方法添加随机性
这是面向对象编程中一个通用规则的示例:有两个方法(update和moveFemale)执行相同或非常相似的操作是不好的。femaleX和femaleY从来都不是非零,据我所知。如果您愿意,编辑问题以添加新问题。我仍然有相同的问题,代码的随机部分无法工作。随机代码在moveFemale()方法中。哦,对不起,我尝试添加moveFemale();进入更新,但仍然不起作用。。。我尝试设置femaleX=2,然后执行femaleX-=walkspeed,但是实体仍然只是坐在那里。需要明确的是,femaleX-=walkspeed不会修改位置,因为femaleX不是实体的x坐标(posX是)。你还在修改posX吗?我解决了它,显然我忘了,但我在随机代码中将walkSpeed转换为int,所以因为它是.1f,所以四舍五入为0。太谢谢你了!
public void update() {
posX += femaleX;
posY += femaleY;
posX -= walkSpeed;
}