Tetris20131476.c

테트리스게임, 누구나 한번쯤 해봤던 게임일 텐데요.

이것을 우리가 직접 개발해본다면 어떨까요? 윈도우에서가 아니라 리눅스에서요.

전체적인 틀은 가져다 쓴것이었지만 이것을 보며 이해하고 기능들을 추가해나가면 많은 도움이 될수 있을 것이라고 생각해요.

그럼 이테트리스게임의 구성도를 보도록 해요.

-이름 및 기능 기술 (함수 부분)

int display_menu(void) : 메뉴화면을 띄워준다. (main함수 안)

int game_manual(void) : 게임설명 화면을 띄워준다 (main함수 안 2번 누름)

int init_tetris_table(void) : 테트리스판의 벽과 공간을 초기화해준다. (game_start, item_use안에 사용)

int display_tetris_table(void) :현재 블록의 상태 및 쌓여진 블록들을 보여준다.(refresh 함수 안)

int game_start(void) : 게임시작시 호출 게임 시작시 refresh함수 콜백함수로 설정, 타이머 등록

int refresh(int) : 타이머에 콜백함수로 등록되어 계속 새로고침 하면서 호출되는 함수. 키입력 확인, display_tetris_table, check_one_line등의 계속 상태가 변함을 확인해야 되는 함수를 호출한다.

int item_use(void) : q키 입력시 3줄삭제 (점수증가) 및 현재블록 삭제시켜주는 함수

int hidden_key(void) : 1누르면 테이블 초기화 함수 치트키

int move_block(int) : 이동, 회전키가 입력되면 이동전에 충돌검사 (collision_test가 포함)

int drop(void) : 충돌되기 전까지 블록을 아래로 내린다.

int collision_test(int) : 블록이 이동, 회전하기 전에 충돌되는 블록이나 벽이 없는지 확인하는 함수

int check_one_line(void) : 한줄이 완성되었는지 확인하는 함수. 완성되면 한줄삭제(1000점 추가)

int print_result(void) : 메뉴에서 기록출력시 호출되어 기록을 출력하는 함수

int search_result(void) : 메뉴에서 기록검색시 호출되어 기러고을 검색하는 함수

int getch(void) : 리눅스에 getch함수가 없어 가져온 함수

-이름 및 기능 기술 (변수 부분)

char tetris_table[21][12] : 테트리스판 배열로 정의(양옆, 아래는 벽 진짜벽 크기=20*10)

int block_number = 0 : 블록 넘버 변수 switch문으로 블록선택

int next_block_number = 0 : 다음 블록 넘버 변수 switch문으로 블록선택

int block_state = 0 : 0~3까지 블록 회전했을 때 모양 변수

int x = 3, y = 0 : 블록의 현재위치 좌표 변수

int game = GAME_END : 게임이 시작되면 1 종료되면 0 초기값은 0

int best_point = 0 : 게임 최고점수 알려주는 변수

long point = 0 : 현재 점수 변수

int item=0 : 획득 아이템 개수 변수

int emp=0 : item 획득 기준 점수 위한 변수

 

static struct result

{

char name[30];

long point;

int year;

int month;

int day;

int hour;

int min;

int rank;

}temp_result; - 게임 결과값을 저장하는 구조체


각각의 함수들을 보며 이해해주면 좋을 것 같네요.

아래는 이코드를 실행했을때의 모습들이에요. 많이 이용해주시고 더 발전시켜주시면 감사해요.


'[c언어]' 카테고리의 다른 글

[C언어] 만약에 ~~ if문 익히기  (0) 2016.11.04
[c언어] 난수 rand(), srand() 이해하기!  (2) 2016.05.16
[c언어] 마방진 함수 만들기  (122) 2016.05.16

+ Recent posts