그래픽스 프로그래밍(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 - 두께

‘ｃ' 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점)