Java-шар не отскакивает от нарисованных прямоугольников, как это должно быть.
Извините за ужасное название. Назначение Java-апплета таково: шарик отскакивает от экрана. Размер и скорость этого шара могут быть изменены с помощью полос прокрутки. Пользователь может нажать и перетащить мышь на экране, чтобы нарисовать прямоугольники. Мяч также будет отскакивать от этих прямоугольников. Границы этих прямоугольников хранятся в векторе. Если щелкнуть прямоугольник, он (и все остальные прямоугольники в этой точке) удаляются из вектора (и экрана).
У меня двойная проблема: во-первых, когда я щелкаю прямоугольник, чтобы удалить его, он не удаляется, но это можно решить позже.
Два: мяч не отскакивает от прямоугольников, как это должно быть. Когда я рисую прямоугольник в той же строке или столбце, что и шар, шар отскакивает внутри крошечного прямоугольника, как будто он застрял.
Вот мой код, чтобы определить, попадает ли шарик в границы апплета или любого из прямоугольников:
public void move()
{
//if it will hit the right or left boundary, flip the x direction and set it
if (loc.x+size >= boundx || loc.x <= 0)
{ dx *= -1; }
//if it will hit the top or bottom boundray, flip the y direction and set it
if (loc.y+size >= boundy || loc.y <= 0)
{ dy *= -1; }
for (int i = 0; i < r.size(); i++)
{
temp = new Rectangle(r.elementAt(i));
int rx = temp.x;
int ry = temp.y;
int rh = temp.height;
int rw = temp.width;
//If the ball hits either side of the rectangle, change the x direction
if((loc.x > rx && loc.x > ry && loc.x < (ry + rh))||(loc.x < (rx + rw) && loc.x > rx && loc.x <(ry + rh)))
{dx *= -1;}
//If the ball hits either the top or bottom, change the y direction
if((loc.y > ry && loc.y > rx && loc.y < (rx + rw))||(loc.y < (ry + rh) && loc.y > ry && loc.y <(rx + rw)))
{dy *= -1;}
}
//Increment or decrement the location of the ball based on the X and Y directions.
loc.x += dx;
loc.y += dy;
}
Если вы хотите просмотреть код целиком, он здесь:http://ideone.com/R1hpBx
Заранее спасибо за всю замечательную помощь.