如何将一个类与局部变量乘以随机值?

时间:2014-08-30 22:52:08

标签: java android

我有这个名为“敌人”的课程。在它内部有一个位图和一些方法来动画这个位图的移动。

所以我想做的是将这个类倍增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);
        }           
    }

1 个答案:

答案 0 :(得分:0)

您可能希望使用特殊的Random类。而是Math.random(),使用Ramdom类并进行播种。

Random generater = new Random(seed); double random=generater.nextDouble();