Ссылаясь на объекты в Java - PullRequest
       2

Ссылаясь на объекты в Java

0 голосов
/ 12 декабря 2018

быстрый вопрос относительно моей программы.Моя программа имеет дело с объектами круга, которые отскакивают в окне JFrame.Когда сталкиваются 2 круга, меньший круг расходуется большим, а меньший исчезает.Метод, который делает это, называется:

checkCollsion();

В моей программе я называю его так:

    for ( int i = 0; i < blobs.length - 1; i++ )
    {
        for ( int j = i + 1; j < blobs.length; j++ )
        {
            blobs[i].checkCollision( blobs[j] );
        }
    }

Мой единственный вопрос заключается в том, что я непонять, как ссылаться на BLOB-объекты [i].Я получаю, как проверить, сталкивается ли что-то, но я не понимаю, как я должен сравнивать blob [i] с blobs [j], поскольку в моем методе я могу передать только объект blobs [j].

Вот код из моего класса BLOB-объектов:

import java.awt.Color;
import java.util.Random;

@SuppressWarnings("serial")
public class Blob extends BouncingBall {
    private int r;
    private int g;
    private int b;
    private Color c; 
    private BouncingBall bb;

    public Blob(int x, int y, int diameter, int windowSize) {
        super(x, y, diameter, windowSize);

    }

    public void setRandomColor(){
        Random r1 = new Random();
        Random r2 = new Random();
        Random r3 = new Random();
        r = r1.nextInt(256);
        g = r2.nextInt(256);
        b = r3.nextInt(256);
        c = new Color(r,g,b);
        setBackground(c);
    }

    public void setRandomDirection(){
        Random r1 = new Random();
        Random r2 = new Random();
        int rightOrLeft = r1.nextInt(2);
        int upOrDown = r2.nextInt(2);

        if (rightOrLeft == 0){
            xDelta = LEFT;
        }else{
            xDelta = RIGHT;
        }
        if (upOrDown == 0){
            yDelta = UP;
        }else{
            yDelta = DOWN;
        }

    }

    public void checkCollision(Blob blobs){


        //setRandomDirection();
        //setRandomColor();
        }


    }

1 Ответ

0 голосов
/ 12 декабря 2018

У вас есть два Blob экземпляра в checkCollision.Параметр blobs и this.Например,

public void checkCollision(Blob blobs) {
    // this is blobs[i] and blobs is blobs[j]
    if ((this.x + this.diameter) == (blobs.x + blobs.diameter)
            && ((this.y + this.diameter == blobs.y + blobs.diameter))) {
        // ...
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...