# java.awt.Color;
# java.awt.Frame;
# java.awt.Graphics;
public class DrawyShape extends Frame{ //1. Frame을 상속
public static void main(String[] args){
DrawShape ds = new DrawShape(); //8.
ds.paint(g);
}
DrawShape(){ //2. 기본생성자 생성
super("Title..."); //3.부모의 생성자 호출
setSize(500,500); // 4. 사이즈 값을 변경
setBackground(Color.MAGENTA); // 5. 바탕색 변경
setVisible(true); // 6. 점선보이게
setResizable(false);//7. 크기 못고치게 false
}
public void paint(Graphics g){
//1. 매개변수가 두개인 생성자를 이용하여 Circle 객체를 만들어주세요
int r = 50;
Point p = new Point(100,100);
Circle c = new Circle(r,p);
// Point pt = new Point(10,20);
// Circle c = new Circle(50,pt);
//2. g.drawOval() 원을 그려주세요
g.drawOval(c.center.x, c.center,y, c.r*2, c.r*2);
//3. 매개변수가 하나인 생성자를 이용하여 Triangle 객체를 만들어주세요
//Point[] a = new Point[3];
//a[0] = new Point(100,100);
//a[1] = new Point(200,200);
//a[2] = new Point(200,100);
Point[] a = {new Point(100,100), new Point(200,200), new Point(200,100)};
}
Triangle t = new Triangle(a); // 점3개를 가지고 있는 배열
//t.a[0] = new Point(100,100);
//t.a[1] = new Point(200,200);
//t.a[2] = new Point(200,100);
//4. g.drawLine() 3개를 이용하여 삼각형을 그려주세요
//g.drawLine(100,100,200,200); // 선1개
//g.drawLine(200,200,200,100); // 선2개 이어지고
//g.drawLine(200,100,100,100); // 선3개 이어지고 삼각형 완성
g.drawLine(t.p[0].x, t.p[0].y, t.p[1].x, t.p[1].y);
g.drawLine(t.p[1].x, t.p[1].y, t.p[2].x, t.p[2].y);
g.drawLine(t.p[2].x, t.p[2].y, t.p[0].x, t.p[0].y);
}
/**
-점을 관리하기 위한 클래스
**/
class Point{
//점의 x,y 좌표 (x,y)
int x;
int y;
Point(int x, int y){
this.x = x;
this.y = y;
}
}
class Circle{
//1. 반지름(정수)을 저장할 수 있는 변수 r을 선언
int r;
//2. 점 하나를 저장할 수 있는 변수 center을 선언
Point center;
//3. 매개변수가 두개인 생성자를 이용하여 r과 center를 초기화해
Circle(int r,Point center){ // = new Point(int x, int y);
this.r = r;
this.center = center;
}
//4. 기본생성자를 만들어주세요
//단. 매개변수가 두개인 생성자를 호출하여 좌표는 100,100 반지름은 50으로 초기화
Circle(){ // 기본생성자에서 다른생성자 호출할 때
this(50,new Point(100,100));
//this.r = 50;
//Point p = new Point(100,100);
}
}
class Triangle{
//1. 점 3개를 저장할 수 있는 변수 p 선언
Point[] p;
//2. 매개변수가 1개인 생성자 호출
Triangle(Point[] p){ // 매개변수가 하나인 이유 : 인스턴스 변수 초기화 목적 -> 생성자 역할
this.p = p;
}
//3. 매개변수가 3개인 생성자 호출
Triangle(int x, int y, int z){
p = new Point[3]; // 주소를 만들어줘야 index에 값을 저장할 수 있다
this.p[0] = x;
this.p[1] = y;
this.p[2] = z;
}
}