我有这个名为“敌人”的课程。在它内部有一个位图和一些方法来动画这个位图的移动。
所以我想做的是将这个类倍增X倍。我用“for”循环和数组做到了,但我发现的是,尽管它们的值是随机的(Math.random()),但是类中的变量最终都是相同的。 / p>
如果我在类之外声明变量,这是有效的,但这不是我想要的,因为我希望该类是独立的。我想要同一个班级,乘以X倍,彼此独立移动。
非常感谢。
public class Enemy {
float q,w,e,r = 0;
public void execute(){
draw();
move();
}
public void draw(){
Bitmap bitmap = (Bitmap) BitmapFactory.decodeResource(getResources(), R.drawable.base);
if(q == 0 && w == 0 || q > e-5 && q < e+5 || w > e-5 && w < e+5){
e = 100 + (float) (Math.random()*200);
r = 100 + (float) (Math.random()*200);
}
canvas.drawBitmap(bitmap, q, w, null);
}
public void move () {
if(q<e && w<r) {
new Thread(); {
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
EplusPlus();
}}}
if(q<e && w>r) {
new Thread(); {
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
EplusMinus();
}}}
if(q>e && w<r) {
new Thread(); {
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
EminusPlus();
}}}
if(q>e && w>r) {
new Thread(); {
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
EminusMinus();
}}}
}
我这样叫这个班:
public void run() {
while(isRunning) {
if(!ourHolder.getSurface().isValid())
continue;
canvas = ourHolder.lockCanvas();
canvas.drawRGB(30, 30, 200);
Enemy[] enemy = new Enemy[3];
for(int i = 0; i<enemy.length; i++){
enemy[i].execute();
}
ourHolder.unlockCanvasAndPost(canvas);
}
}
答案 0 :(得分:0)
您可能希望使用特殊的Random类。而是Math.random()
,使用Ramdom
类并进行播种。
Random generater = new Random(seed);
double random=generater.nextDouble();