3-8. 1) DRAW SHAPE

zhyun·2020년 8월 29일
0

java

목록 보기
1/11

1.Draw Circle

2.Draw Triangle

# 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;
    }
}
profile
HI :)

0개의 댓글