- 사용자로부터 중심점의 좌표와 반지름을 입력받아 * 마크로 원을 그린다.
- 전 단계처럼 80 * 30 의 테두리에서 지정한 도형을 그리는 그림판을 구현한다.
- 단 직선, 사각형, 원을 선택적으로 그릴 수 있어야 한다.
- 도형을 그릴때 사용자가 지정한 마크로 도형을 채워야 한다.
- 새로 그린 도형이 이전에 있던 도형과 겹칠 경우 위쪽에 새로 그린다.
- 사용자로부터 입력받은 명령을 처리할 수 있을 경우 해당 명령을 수행한다.
- 명령의 종류는 다음과 같다.
help: 도움말, 지금 이 화면을 출력한다.
line x1, y1, x2, y2, m: 두 좌표를 지정한 모양으로 잇는 선을 그린다.
circle x, y, r, m: x,y 를 중점으로 하는 반지름 r인 원을 그린다.
rectangle x1, y1, x2, y2, m: 두 좌표를 양 끝점으로 하는 직사각형을 그린다.
quit: 프로그램을 종료한다.
- 처음 프로그램을 실행하면 80 * 30 테두리를 출력한다.
- 다음 줄에 명령을 입력하세요(help: 도움말) 을 출력하고 사용자 입력을 받는다.
- 프로그램을 종료하기 전까지 사용자 입력을 반복적으로 받는다.
- 너무 크지 않은 함수 단위로 구현하고 중복된 코드를 줄이도록 노력한다.
- 전역변수의 사용을 자제한다.
- 객체, 리스트, 배열 등을 적절히 활용한다.
- 1단계와 같이 README.md 파일을 작성한다.
- 구현 완료 커밋에 v3 태그를 생성하고 GitHub에 push 한다.
- InputView
- 사용자로부터 명령을 입력받는다.
- 입력이 어떤 명령어인지 확인한다.
- 처음 나온 공백을 기준으로 입력을 나눈다.
- 나눠진 입력 중 첫번째 값이 명령어 종류이다.
- [예외처리] 준비된 명령어가 아닐 경우 IllegalArgumentException을 발생시킨다.
- [예외처리]help 명령과 quit 명령의 경우 나눠진 입력의 길이가 1이 아닐 경우 IllegalArgumentException을 발생시킨다.
- line 명령의 경우, 나눠진 입력의 두 번째 요소는 x1, y1, x2, y2, m으로 이루어져 있다.
- [예외처리]콤마를 기준으로 나눴을 때 앞뒤 공백을 제거하고도 숫자가 아닌 요소가 있다면 IllegalArgumentException을 발생시킨다.
- circle 명령의 경우, 나눠진 입력의 두 번째 요소는 x, y, r, m으로 이루어져 있다.
- [예외처리]콤마를 기준으로 나눴을 때 앞뒤 공백을 제거하고도 숫자가 아닌 요소가 있다면 IllegalArgumentException을 발생시킨다.
- rectangle 명령의 경우, 나눠진 입력의 두 번째 요소는 x1, y1, x2, y2, m으로 이루어져 있다.
- [예외처리]콤마를 기준으로 나눴을 때 앞뒤 공백을 제거하고도 숫자가 아닌 요소가 있다면 IllegalArgumentException을 발생시킨다.
- 콤마 다음에는 공백이 하나 있어도 무관하다.
- 입력이 어떤 명령어인지 확인한다.
- 사용자로부터 명령을 입력받는다.
- 로직
- InputView에서 받은 명령어와 좌표를 저장한다.
- 잘못된 입력이 있을 경우 다시 입력받는다.
- InputView에서 IllegalArgumentException을 던진 경우를 처리한다.
- 각 도형의 조건에 부합하지 않은 경우 발생한 IllegalArgumentException을 처리한다.
- 잘못된 입력이 있을 경우 다시 입력받는다.
- 그림판을 만든다.
- 80*30의 테두리를 그린다.
- 공백으로만 이루어진 이차원 배열을 생성한다.
- 꼭짓점을
+
로 채운다. - 가로 테두리를
-
로 채운다. - 세로 테두리를
|
로 채운다.
- 80*30의 테두리를 그린다.
- 도형을 그린다.
- 새로 그린 도형이 이전에 있던 도형과 겹칠 경우 위쪽에 새로 그린다.
- InputView에서 받은 명령어와 좌표를 저장한다.
- OutputView
- 프로그램 시작 메시지를 출력한다.
- 입력에 문제가 있을 시 메시지를 출력한다.
- 이차원배열을 받아 출력해준다.
- 프로그램 종료 메시지를 출력한다.
- 실제 시험문제에는 자세히 기술하겠습니다!