그래픽스 프로그래밍(321190) 실습 #1

- 2D graphics & primitives

(321190)

강사: 박경신

2009년 3월 19일

제출 방법: 2009년 4월 6일(월) 밤12시까지

(e-learning 강의실에 실행파일과 소스코드와 리포트를 전부 “학번이름_숙제1.zip”으로 묶어서 제출하도록 합니다. 또한, 소스코트 폴더에 .cpp만 담지 말고 비주얼 스튜디오에서 만든 프로젝트 폴더를 담기 바랍니다.)

참고자료: spaceinvader_starter.zip & primitives.cpp & glutText.cpp

http://en.wikipedia.org/wiki/Space_Invaders

0. Display window 크기는 400 x 400로 한다.

1. Simple Space Invaders 게임을 만든다. (30점)

-gluOrtho2D(0, 200, 0, 200)를 사용한다.

-게임의 Finite State Machine을 구현한다.

-게임의 상태는 시작, 게임중, 종료로 한다.

-keyboard

-'space bar'-key는 게임을 ‘시작’하는데 사용된다.

-'space bar'-key는 게임 플레이시 우주선(ship)에서 레이저총알 (bullet)을 쏘는데

사용된다.

-'space bar'-key는 게임이 종료된 후에 다시 게임을 ‘시작’할 때에도 사용된다.

-‘left/right arrow’-key로는 우주선(ship)을 화면에서 좌우로 움직이게 한다.

-display

-게임의 상태에 따라서, 게임 시작 시 'Press Space-Key to Start' 메시지를

glutText 등을 이용하여 화면에 출력한다.

-게임 중에는 살아 움직이는 모든 객체 (즉, ship, bullets, aliens)를 그린다.

-게임이 종료되면 ‘Game Over'를 알리고 ’Press Space-Key to Restart'와

‘Press Q-Key to Quit' 메시지를 glutText 등을 이용하여 화면에 출력한다.

-update

-레이저총알(bullet)이 외계인(alien)을 요격하면 죽는다.

-일정 시간이 지나면 외계인들이 우주선에 더욱 가까이 다가온다.

-전체 제한된 게임 시간 내에, 모든 외계인을 요격하여 죽이면 Game Over

2. Ship, Bullet, Alien 클래스를 작성한다. (30점)

-Ship

-사용자 키 입력으로 우주선의 본체가 좌우로 움직일 수 있다.

-Bullet

-레이저총알을 발사하면 새로운 총알이 리스트에 추가된다.

-모든 레이저총알에 대해서, 시간이 증가되면 수명(life)을 증가시키고

BULLET_LIFE_TIME을 넘어간 총알은 리스트에서 지운다. 그 외의 다른 경우는

총알의 위치가 앞으로 전진 한다.

-Alien

-초기화시, 화면 위쪽에 새로운 외계인들이 나타난다.

-모든 외계인들에 대해서 자기가 총알이 맞았는지(intersect)를 확인하고 맞았으면

해당 외계인을 리스트에서 지운다.

-모든 외계인들을 한꺼번에 아래로 전진할 수 있도록 한다.

-모든 외계인들이 죽었는지 확인할 수 있도록 한다.

3. Score 클래스를 작성한다. (10점)

-Score

-레이저총알이 외계인을 죽이면, 점수(1개당 100점씩)가 올라가고 화면에

출력된다.

4. 창의성, 소스코드 주석처리, 리포트 (30점)

5. 사운드 추가 (extra 10점)