MIDAS CHALLENGE 우수상 수상 작품
- 각종 필수 기능을 구현한 인테리어 프로그램 개발
- 새 문서 만들기/저장/열기
-> 파일은 json forma인 Text 파일로 저장되며, 실제 문서 작업과 같이 필요한 기본 기능 모두 구현
- 최종 결과물 이미지 출력
→ 이미지는 jpg, jpeg, png, svc 등등 어떠한 이미지 파일 형식으로도 저장 가능 하며 이미지의 파일 형식이 아닐 경우의 예외처리 구현
- 공간 정의하기
→ 제약 조건을 모두 준수
조건 A) 사방이 벽으로 막혀있는 공간이 존재할 경우 저장의 기능은 할 수 있지만, 이미지 파일로 출력할 수 없음 -> 사용자가 혹시나 작업을 하다 저장하지 못할 경우를 고려
조건 B) 문과 창문은 벽 위에서만 그릴 수 있음
- 객체 정의하기
→ 제약 조건을 모두 준수
조건 C) 기본으로 배치 가능한 객체인 세탁기, 냉장고 정의
조건 D) 객체가 공간에 움직일 경우 마그네틱을 이용해 공간에 달라 붙음
공간이 객체에 움직일 경우 설계상 공간 안의 객체는 다시 재 배치 하는 것으로 판단
- 치수 표현 가능
→ 치수를 처음 입력한 Canvas에 비율에 맞게 조정함, 치수를 볼 수도 있고 수정도 가능
- 편집 명령
→ 객체나 공간 모두 이동, 삭제, 복사, 수정의 기능이 가능
- 마우스 조작 편의 기능
→ 클릭 된 객체는 색깔을 다르게 하여 판단 마우스를 드래그 해 이동할 수 있으며 마우스 우 클릭을 통해 편집 명령 가능
- 색을 통한 구분 가능
→ 클릭 된 객체는 사용자가 원하는 대로 어떤 컬러 든 바꿀 수 있음
- 사용자 객체 정의 기능
→ 프로그램에서 기본적으로 제공이 어려운 객체의 경우, 사용자는 새로운 객체를 정의할 수 있으며 복사의 기능을 통해 정의 된 객체를 쉽게 사용 가능
- 공간의 그룹화
→ 사용자가 사용하기 편하게 하기 위해 벽에 문과 창문을 결합할 경우 그룹화 하여 이동 하는 기능 구현
- 부드러운 애니메이션
→ 치수로만 입력하여 공간이나 객체를 표현하지 않고 마우스로 드래그 하여 각 공간과 객체를 표현 가능, 움직인 위치에 맞춰서 치수가 수정
- 사용자를 배려한 UI/UX 설계
→ 객체를 벽에 넣을 때 만약 그 벽에 문이 없거나 문이 있어도 넣으려는 객체가 더 크기가 작아 의미가 없을 경우 사용자가 불편하지 않게 객체는 공간에 들어가지 못 함