글
마지막으로, 전체적으로 테트리스를 실행시키는, Main.c 를 분석하겠습니다. 먼저, 추가, 삭제, 변경 내역을 살펴보겠습니다.
[Main.c 버전 비교]
13 라인 (변경)
17 라인 (삭제)
21 라인 (추가)
36 라인 (추가)
53 라인 (추가)
이제는, 위에서 언급한 부분들을 분석할 차례입니다.
[Main.c]
#include <stdio.h> #include <conio.h> #include <windows.h> #include <time.h> #include "Constant.h" #include "TetrisView.h" int main(int argc, char* argv[]){ TetrisView tetrisView; TetrisView_StartGame(&tetrisView); int processType; int direction; DWORD tickCount = GetTickCount(); while (True){ processType = AUTO; direction = DOWN; while (True){ if (GetTickCount() - tickCount > TetrisView_GetDownMilliSecond(&tetrisView)){ processType = AUTO; direction = DOWN; tickCount = GetTickCount(); break; } if (_kbhit()){ int key = _getch(); if (_kbhit()){ key = _getch(); if (key == UP_KEY_CODE){ processType = DIRECTION; direction = UP; break; } else if (key == DOWN_KEY_CODE){ processType = DIRECTION; direction = DOWN; tickCount = GetTickCount(); break; } else if (key == LEFT_KEY_CODE){ processType = DIRECTION; direction = LEFT; break; } else if (key == RIGHT_KEY_CODE){ processType = DIRECTION; direction = RIGHT; break; } } else{ if (key == SPACE_BAR_KEY_CODE){ processType = DIRECT_DOWN; tickCount = GetTickCount(); break; } } } } TetrisView_ProcessGame(&tetrisView, processType, direction); } return 0; }
13 라인 (변경)
while 문 들어가기 전에 GetTickCount 를 호출하여 현재 틱 카운트를 가져와서 tickCount 변수에 저장합니다.
17 라인 (삭제)
21, 36, 53 라인의 추가를 통해서, while 문 초반에 GetTickCount 를 세는 부분은 필요 없어서 삭제했습니다.
21 라인 (추가)
적절한 시간 간격이 되어서, 블럭이 자동으로 밑으로 떨어지게 되면, 다시 GetTickCount 를 세서 tickCount 에 저장합니다. (새로 세기 시작)
36 라인 (추가)
사용자의 아래 키를 입력 받았을 때에도, 다시 GetTickCount 를 세서 tickCount 에 저장합니다. (새로 세기 시작)
53 라인 (추가)
사용자의 스페이스바 키를 입력 받았을 때에도, 다시 GetTickCount 를 세서 tickCount 에 저장합니다. (새로 세기 시작)
결국, 블럭이 아래로 내려가는 경우 (자동으로 내려갈 때, 아래 키를 눌렀을 때, 스페이스 바 키를 눌렀을 때) 에는, 틱 카운트를 초기화하여 다시 세는 방식으로 변경한 것입니다.
'1.2) 프로젝트 > 테트리스' 카테고리의 다른 글
테트리스 ver 0.6 (1) - 실행 결과 & 프로젝트 개요 (6) | 2016.02.23 |
---|---|
테트리스 ver 0.5 (1) - 실행 결과 & 프로젝트 개요 (0) | 2016.02.23 |
테트리스 ver 0.4 (1) - 실행 결과 & 프로젝트 개요 (6) | 2015.08.21 |
테트리스 ver 0.3 (9) - 개발 완료 / 후기 (0) | 2015.08.21 |
테트리스 ver 0.3 (7) - 소스코드 구현 (TetrisManager) (0) | 2015.08.21 |
테트리스 ver 0.3 (6) - 소스코드 구현 (Block) (0) | 2015.08.21 |
테트리스 ver 0.3 (5) - 소스코드 구현 (Util) (0) | 2015.08.21 |
테트리스 ver 0.3 (4) - 소스코드 변경 내역 (0) | 2015.08.20 |
테트리스 ver 0.3 (3) - 프로그램 설계 (Use Case, Class, Sequence) (0) | 2015.08.20 |
테트리스 ver 0.3 (2) - 요구사항 분석 (0) | 2015.08.20 |
RECENT COMMENT