Поддерживать дистанцию между объектами в [закрытом] Java

У меня есть 3 мяча внутри одного JPanel что двигаются в случайных скоростях. Даже там все хорошо. Но я хотел бы, чтобы мячи всегда были без равной дистанции, например, что вертикальная дистанция между каждой была 50 пикселей.

package jFrameLluvia; 
import java.awt.Color;
import java.awt.Graphics;
import java.util.Random;

public class Gota {
    private int x;
    private int y;
    private int radio;
    private int retraso;
    private Random r;
    private int velocidad;

    public Gota() {
        this.r = new Random();
        this.radio = 5;
        this.x = 100;
        this.y = r.nextInt(250 + 2 * radio) - radio;
        this.retraso = r.nextInt(20) + 1;
        this.velocidad = (radio + 1) / radio;
    }

    public void moverse(int ancho) {
        if (retraso == 0) {
            if (x < ancho)
                x += velocidad;
            else {
                x = 150 + radio;
                this.retraso = (5) + 1;
            }
        } else
            retraso--;
    }

    public void dibujar(Graphics g) {
        g.setColor(Color.BLACK);
        g.fillOval(x - radio, y - radio, 2 * radio, 2 * radio);
    }
}
1
задан 12.02.2017, 07:34
1 ответ

Ты можешь создавать строитель в твоем классе Gota что получил стоимость Y как аргумент, и использовать остальную стандартную настройку для оставшейся части полей. Здесь пример:

public class Gota {
    //los otros campos permanecen tal cual
    private Random r = new Random();

    public Gota() {
        //se aprovecha utilizar this(arg) para delegar trabajo a otro constructor
        this.(r.nextInt(250 + 2 * radio) - radio);
    }

    public Gota(int y) {
        this.radio = 5;
        this.x = 100;
        this.y = y;
        this.retraso = r.nextInt(20) + 1;
        this.velocidad = (radio + 1) / radio;
    }

    //resto de métodos en la clase
}

И потом ты можешь создавать другие инстанции Gota основанный на инстанции, которая уже у тебя была бы:

Gota gota1 = new Gota();
Gota gota2 = new Gota(gota1.getY());
3
ответ дан 24.11.2019, 14:45

Теги

Похожие вопросы