[프로그램 설계]
0. 프로그램 시작 시 Ball 객체 1개와 Player가 생성되고 초기화된다
0. Ball은 Player에 부착되어 있는 상태로 Player 이동 시 같이 움직인다
0. SpaceBar를 이용하여 부착된 Ball을 발사한다
0. Ball의 발사 및 충돌 후 반사의 계산에 Vector2를 이용한다
0. 최초 발사 각도는 Vector2(0, -1) 방향이다
0. 이후 Player와 Ball의 충돌 시 [a. base Point](영상에서 Player 하단의 점)와
충돌 시점의 [b. Ball의 위치]의 방향벡터(b-a)를 계산하여 반사 처리한다
0. ball이나 item은 게임 영역의 하단부에 충돌 시 비활성화되어 Obejct Pool에 보관된다
0. 화면 우상단에 activeBalls로 현재 활성화된 ball의 개수가 표시되며,
개수가 0이 되면 Player의 life를 1 감소시키고 초기화한다
# 구현한 Item 종류
1. size up / 2. speed up / 3. multiply ball / 4. fireball mode / 5. magnetic mode
[구현 중점]
0. Player, Ball, Block, Item 등 4개 object class 구현
0. GameScene <-> object 간 유기적인 포인터 연결 활용
- this 포인터를 이용하여 Object 생성 시 Scene* 할당
0. STL::vector를 활용하여 Ball, Block, Item 오브젝트 풀 생성
- 오브젝트 풀에 속하는 각 객체들의 Active, InActive 전환 시
다양한 상황에서 예외 처리와 초기화
0. Vector2 class를 작성하여 Rotation() 기능 구현
0. "HGDIOBJ oldObj = SelectObject(HDC hdc, HGDIOBJ hgdiobj)"를
적절히 활용하여 정돈된 색상 표현
[보완점]
0. Block <-> Ball의 충돌처리 매끄럽게
- Block 간의 거리가 좁은 부분에서 중복 충돌되어 한꺼번에 여러 Block이 사라지는 버그
- Ball이 동시에 2개의 Block에 충돌했을 때 반사각 처리