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

리눅스에서 c파일을 컴파일하다보면 여러개를 계속해서 해줘야하는 불편함을 느껴 본적 있을 텐데요.

그럴때 쓰는 것이 MAKE파일입니다.

MAKE는 소스 프로그램 하나씩 수작업으로 처리하는 번거로움을 줄여주는 것으로 자동적으로 재컴파일 하고 

링크해주는 것입니다.

make도구를 이용할 때 가장 중요한 파일은 Makefile 인데 이것을 작성하는 규칙은 아래와 같습니다.


대상(TARGET)...:의존하는 파일들(PREREQUISTITES).......

명령(COMMAND)

....

....

....

만약 소스 및 생성 파일이 아래와 같은 의존관계를 가지고 있으면

의존관계는 이렇게 표현할수 있습니다.

foobar : main.o foo.o bar.o

main.o : main.c

foo.o : foo.c

bar.o : bar.c

그럼 이걸 이용하여 makefile을 만들어 볼까요?

foobar : main.o foo.o bar.o

gcc -o foobar main.o foo.o bar.o

main.o : main.c

gcc -c main.c

foo.o : foo.c

gcc -c foo.c

bar.o : bar.c

gcc -c bar.c

clean : //이 명령어를 실행하려면 터미널에 make clean를 입력하면 됩니다.

rm -f foobar main.o foo.o bar.o


만든 make파일을 실행하려면 터미널에 make라고 입력해주면 컴파일이 자동으로 됩니다.


+ Recent posts