Rainbow

/*

  • File: Rainbow.java
  • Name:
  • Section Leader:

  • This file is the starter file for the Rainbow problem.
    */

import java.awt.Color;
import acm.graphics.;
import acm.program.
;

import acm.util.*;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Rainbow extends GraphicsProgram {

public void run() {
	
	GRect background = new GRect(0, 0, getWidth(), getHeight());  // 맨위의 바탕색깔을 cyan으로 지정한다.
	background.setFilled(true);
	background.setFillColor(Color.CYAN);
	add(background);
	

	makeLine(0,Color.RED);
	makeLine(1,Color.ORANGE);
	makeLine(2,Color.YELLOW);
	makeLine(3,Color.GREEN);
	makeLine(4,Color.BLUE);
	makeLine(5,Color.MAGENTA);
	makeLine(6,Color.CYAN);
	
}

public void makeLine(int i, Color color) {  // 차례대로 위에서부터 반지름이 (너비^2 + 높이^2)/높이 인 원을 그려준다. 
	double a = getWidth();
	double b = getHeight();
    double r = (a*a/4+b*b/4)/b*2.6;  // 
    double h = 35;  // 원끼리의 차이를 30으로 잡는다.
    double x = a/2-r/2;
    double y = r/2+b/2-700;
	GArc circle = new GArc(x+h*i/2,y+h*i/2,r-h*i,r-h*i,0, 180); 
	
	// x, y 좌표를 고정해준다음에 반지름 크기를 줄여서 원을 만들어 준다.
	// 이떄 반지름 크기를 줄이게 되면 원의 위치가 이동하기 떄문에 줄어드는 만큼의 반만큼 반대로 이동시켜준다.
	add(circle);
	circle.setFilled(true);
	circle.setColor(color);
}

}

좋은 웹페이지 즐겨찾기