그림판 프로젝트 - 3단계: 콘솔 그림판 구현하기

  • 사용자로부터 중심점의 좌표와 반지름을 입력받아 * 마크로 원을 그린다.

요구사항

  • 전 단계처럼 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: 도움말) 을 출력하고 사용자 입력을 받는다.
  • 프로그램을 종료하기 전까지 사용자 입력을 반복적으로 받는다.

3단계 코딩 요구사항

  • 너무 크지 않은 함수 단위로 구현하고 중복된 코드를 줄이도록 노력한다.
  • 전역변수의 사용을 자제한다.
  • 객체, 리스트, 배열 등을 적절히 활용한다.
  • 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의 테두리를 그린다.
        • 공백으로만 이루어진 이차원 배열을 생성한다.
        • 꼭짓점을 +로 채운다.
        • 가로 테두리를 -로 채운다.
        • 세로 테두리를 |로 채운다.
    • 도형을 그린다.
      • 새로 그린 도형이 이전에 있던 도형과 겹칠 경우 위쪽에 새로 그린다.
  • OutputView
    • 프로그램 시작 메시지를 출력한다.
    • 입력에 문제가 있을 시 메시지를 출력한다.
    • 이차원배열을 받아 출력해준다.
    • 프로그램 종료 메시지를 출력한다.

풀이과정 및 코드 설명

  • 실제 시험문제에는 자세히 기술하겠습니다!

실행 결과