Hi jbr123,
It is really inefficient to keep an array of all the other object created inside your object.
Imagine that you have 1000 objects. it means that you have to get in memory 1000! objects. It is not completely true since it does not perform deep copy of the object but just point towards them but still.
The way to do what you what is to modify your collide() method with a collideWith(Ball other) method. There is not much to change, but it allow you to get rid of your others array since now you can give the other that you want to check. You can even pass on the complete array of ball if you want with something like this: collideWith(Ball[] others) but I advise the first method since it allows a bit more flexibility in case you just want to collide on specific object.
Then, if you don’t want to create a parent class you need to also create a collideWith(Blip other) method that will this time take a Blip object.
Do the same for the Blip class.
Then do this in your draw() function
for (int i = 0; i < numBalls; i++) {
for (int j = i; j < numBalls; j++) {
Balls[i].collidewith(Balls[j]);
}
for (int j = 0; j < numBlips; j++) {
Balls[i].collidewith(Blip[j]);
}
}