У меня проблемы с проведением сравнений.Предполагается, что проект нарисует квадрат из пользовательского ввода, а затем, где бы пользователь ни щелкнул, там будет нарисована точка разных цветов.Например, если они щелкают внутри квадрата, он должен сделать красный круг, если он находится на краю квадрата, он делает зеленый круг, а если снаружи он делает синий круг.На данный момент моя программа рисует красные и синие круги, но без зелени.На самом деле, он также рисует красные круги, когда он находится выше определенной точки.
public class Square extends GraphicsProgram {
// Instance variables
private int side; // the length of a side
private int anchorX; // the X value at the upper left corner
private int anchorY; // the Y value at the upper left corner
public Square(int x, int y, int side) {
anchorX = x;
anchorY = y;
this.side = side;
}
// mouseClicked method
public void mouseClicked(MouseEvent e) {
// Find the location where the mouse was clicked
int x = e.getX();
int y = e.getY();
// boolean variables to indicate location
boolean isInside = false;
boolean isOutside = false;
boolean isOnEdge = false;
if (x > anchorX + 1 && anchorY + 1 < y && anchorY + side + 1 > y) {
isInside = true;
}
if (x > anchorX + side + 1 && anchorY + side + 1 < y && x > anchorX + side - 1 & y > anchorY + side - 1) {
isOutside = true;
}
/*** NOTE: There a hard, and an easy way to do this! ***/
if (anchorX - 1 <= x && x <= anchorX - 3 && anchorY - 1 <= y && anchorY + side - 3 >= y) {
isOnEdge = true;
}
if (isOnEdge == true) {
System.out.println("(" + x + ", " + y + ") is on the square");
GOval circle = new GOval(x - 2, y - 2, 4, 4);
circle.setFillColor(Color.GREEN);
circle.setFilled(true);
add(circle);
}
else if (isInside == true) {
System.out.println("(" + x + ", " + y + ") is inside the square");
GOval circle = new GOval(x - 2, y - 2, 4, 4);
circle.setFillColor(Color.RED);
circle.setFilled(true);
add(circle);
}
else if (isOutside == true) {
System.out.println("(" + x + ", " + y + ") is outside the square");
GOval circle = new GOval(x - 2, y - 2, 4, 4);
circle.setFillColor(Color.BLUE);
circle.setFilled(true);
add(circle);
}
}
}
Нам дали подсказку о том, как (x, y) расположить квадрат как
«Например, левый край квадрата имеет:
x значений в диапазоне: anchorX-1 ≤ x ≤ anchorX + 1 и значения y в диапазоне: anchorY-1 ≤ y ≤ anchorY + side+1.
Что означало бы, что если бы у нас был квадрат с якорем X 50, якорем 100 и стороной 60, координаты, подобные (49-51, 99-161), были бы рассмотрены на краю левой стороны.