좌표평면에서 점이 이동하기 위해서는 위, 아래, 왼쪽, 오른쪽 이동메소드가 필요하다.
상위인터페이스에 만들어주도록하자.
.
.
package InterfaceMoveable;
public interface Moveable {
public abstract void moveUp();
public abstract void moveDown();
public abstract void moveLeft();
public abstract void moveRight();
}
.
.
좌표평면은 컴퓨터 화면 기준으로 한다.
왼쪽 상단 부분을 (0,0)으로 시작하여 오른쪽과 아래로 가는 것이 +이다.
.
.
점 이동 클래스부터 구현해본다.
.
.
package InterfaceMoveable;
public class MoveablePoint implements Moveable{
int x, y, xSpeed, ySpeed;
public MoveablePoint(int x, int y, int xSpeed, int ySpeed) {
this.x = x;
this.y = y;
this.xSpeed = xSpeed;
this.ySpeed = ySpeed;
}
public void moveUp() {
y -= ySpeed;
}
public void moveDown() {
y += ySpeed;
}
public void moveLeft() {
x -= xSpeed;
}
public void moveRight() {
x += xSpeed;
}
@Override
public String toString() {
return "MoveablePoint [x=" + x + ", y=" + y + ", xSpeed=" + xSpeed + ", ySpeed=" + ySpeed + "]";
}
}
.
.
xSpeed와 ySpeed는 단위이동당 얼만큼 움직이나를 나타내는 것이다.
.
.
원이 움직이는 클래스도 만들어본다.
원이 움직이는 것은 원의 중심이 움직이는 것으로 한다.
.
.
package InterfaceMoveable;
public class MoveableCircle implements Moveable{
int radius;
MoveablePoint center;
MoveableCircle(int x, int y, int xSpeed, int ySpeed, int radius){
center = new MoveablePoint(x, y, xSpeed, ySpeed);
this.radius = radius;
}
public void moveUp() {
center.y -= center.ySpeed;
}
public void moveDown() {
center.y += center.ySpeed;
}
public void moveLeft() {
center.x -= center.xSpeed;
}
public void moveRight() {
center.x += center.xSpeed;
}
@Override
public String toString() {
return "MoveableCircle [radius=" + radius + ", center=" + center + "]";
}
}
.
.
한 번 테스트 해본다.
.
.
package InterfaceMoveable;
public class TestMoveable {
public static void main(String[] args) {
Moveable m1 = new MoveablePoint(5, 6, 10, 10);
System.out.println(m1);
m1.moveLeft();
System.out.println(m1);
Moveable m2 = new MoveableCircle(2, 1, 2, 2, 20);
System.out.println(m2);
m2.moveRight();
System.out.println(m2);
}
}
.
.
입력한대로 잘 움직였다.
좌표평면이 우리가 중고등학교때 배웠던 것이랑 차이가 있어서 이해하는데 조금 어려움이 있었다.
728x90
반응형
'Java > 본격 Java 퀴즈 기초' 카테고리의 다른 글
[Java] Stack을 이용하여 2진수 만들기 (0) | 2020.07.13 |
---|---|
[Java] 도형의 성질을 이용하여 크기 조절하기(인터페이스) (0) | 2020.07.13 |
[Java] 도형 그리기 인터페이스 (0) | 2020.07.13 |
[Java] 원과 직사각형 추상클래스로 상속받아 구현하기 (0) | 2020.07.13 |
[Java] 동물 추상클래스로 상속받아 구현하기 (0) | 2020.07.10 |