그래픽스 프로그래밍(321190) 실습 #2
– 2D graphics & interaction (mouse, keyboard, menu)
(321190)
강사: 박경신
2008년 4월 3일
제출 방법: 2008년 4월 18일(금) 밤12시까지
(e-learning 강의실에 실행파일과 소스코드와 리포트를 전부 “학번이름_숙제2.zip”으로 묶어서 제출하도록 합니다. 또한, 소스코트 폴더에 .cpp만 담지 말고 비주얼 스튜디오에서 만든 프로젝트 폴더를 담기 바랍니다.)
참고자료: Scribble.zip & SimpleScribble.zip
0. Display window 크기는 1024 x 768로 한다.
1. Stroke 클래스를 완성한다. (10점)
-두께 (thickness 1~7), 색 (R:0~255, G:0~255, B:0~255), 점들 (ptArray)
2. 마우스의 움직임에 따라 그림을 그리는 Scribble 낙서장을 만든다. (30점)
-왼쪽 마우스 버튼 – 새로운 Stroke의 점을 찍는다.
-왼쪽 마우스 모션 – Stroke의 점이 계속해서 그려진다.
-중간 마우스 버튼 – 모든 Stroke를 지운다.
3. Stroke의 색(color)과 두께(thickness)를 바꿀 수 있도록 GLUT 키보드(keyboard)와 메뉴(menu) 인터랙션을 추가한다. 메뉴는 오른쪽 마우스 버튼에 붙힌다. (20점)
-키보드
‘r’, ‘g’, ‘b’, ‘y’, ‘m’ KEY – 빨간색, 초록색, 파란색, 노란색, 보라색
‘1’ ~ ‘7’ KEY – 두께
‘c’ KEY - 화면을 지운다 (clear screen)
‘ESC’ KEY – exit
-메뉴 (RIGHT_MOUSE_BUTTON)
color: red, green, blue, yellow, magenta
thickness: 1, 2, 3, 4, 5, 6, 7
clear
quit
4. MFC SimpleScribble과 호환이 가능한 Text file import(스트로크 데이터 텍스트 파일 읽어들이기)와 export(스트로크 데이터를 텍스트로 저장하기). (10점)
-fileimport – argv[1]으로 파일 읽어들이기
// 한 line씩 읽어들여서,
// 먼저 line에 “Thickness”가 있는지 찾고,
// 있으면 new Stroke를 하고 이것을 aStrokeList에 추가한다.
// 만약 아니면, 새로운 Stroke가 아니니까
// 그냥 이전에 생성한 Stroke의 ptArray에 Point를 추가한다.
-fileexport – ‘s’-KEY를 누르면 “out.txt” 파일로 저장하기
// aStrokeList 안에 있는 모든 Stroke 별로,
// 먼저, 이 Stroke의 펜 두께와 색 “Thickness: %d Color: RGB(%d, %d, %d)”를
// 출력한다. 그리고, 이 Stroke의 모든 점들을 (%d, %d)로 출력한다.
-첨부된 텍스트 파일 (Test.txt)를 사용하여 테스트해 볼 것
5. 프로그램이 완성되면 본인의 이름과 소개를 Scribble로 그린다. 창의성, 소스코드 주석처리, 리포트 (30점)