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

Заранее спасибо за всю замечательную помощь.

Ответы на вопрос(1)

Ваш ответ на вопрос