Limits between circles

1

I have 2 circles, one drawn in the center of the screen and one that I move. What I want to do is that the circles do not overlap when I move one over another. I managed to do something similar but it is horrible, I wanted to know if there is a more efficient way to achieve it.

Thank you.

public class Juego extends SurfaceView implements View.OnTouchListener{

private Paint paint;
int x = 100, y = 100, radio = 100, otroX, otroY;

public Juego(Context context, AttributeSet attrs) {
    super(context, attrs);
    this.setOnTouchListener(this);
    setFocusable(true);
    paint = new Paint();
}

public void onDraw(Canvas canvas) {

    paint.setColor(Color.WHITE);
    canvas.drawRect(0, 0, getWidth(), getHeight(), paint);

    paint.setColor(Color.BLACK);
    canvas.drawCircle(x, y, radio, paint);

    otroX = canvas.getWidth() / 2;
    otroY = canvas.getHeight() / 2;

    canvas.drawCircle(otroX, otroY, radio, paint);

    invalidate();
}

@Override
public boolean onTouch(View view,MotionEvent motionEvent){

    x = (int)motionEvent.getX();
    y = (int)motionEvent.getY();

    double dist = Math.sqrt(Math.pow((x - otroX), 2) + Math.pow((y - otroY), 2));

    if (dist <= radio + radio) {

        if (x < otroX) {
            x = otroX - radio - (radio / 2);
        }
        if (x > otroX) {
            x = otroX + radio + (radio / 2);
        }
        if (y < otroY) {
            y = otroY - radio - (radio / 2);
        }
        if (y > otroY) {
            y = otroY + radio + (radio / 2);
        }
    }

    invalidate();
    return true;
}

}

This is what I have: link

and this is how I would like it to be: link

    
asked by Zekirak 25.02.2018 в 20:43
source

0 answers