현재 위치 - 중국 분류 정보 발표 플랫폼 - 비즈니스 서비스 정보 - C 언어 스네이크 소스 코드

C 언어 스네이크 소스 코드

//* * * * * * 우정 팁: 빨리 하려면 _sleep(500) 함수에서 매개변수 * * * * *?

#include? Lt; Stdio.hgt;; -응?

#include? Lt; Stdlib.hgt;; -응?

#include? Lt; Conio.hgt;; -응?

#include? Lt; String.hgt;; -응?

#include? Lt; Time.hgt;; -응?

Const? Int? H? =? 8; //지도의 높이?

Const? Int? L? =? 16; -응? //지도의 길이?

차? Gamemap [h] [l]; //게임지도?

Int? 키; -응? //키를 눌러 저장하시겠습니까?

Int? 샘? =? 1,? 오버? =? 0; -응? //뱀의 길이? 게임 종료 (스스로 먹거나 벽에 부딪치는 것)?

Int? Dx[4]? =? {0,? 0,? -1,? 1}; -응? //왼쪽, 오른쪽, 위, 아래 방향?

Int? 디 [4]? =? {-1,? 1,? 0,? 0}; -응?

Struct? 뱀//뱀의 각 노드에 대한 데이터 유형?

{? Int? X,? Y; -응? //왼쪽 위치? Int? 노; //현재 노드의 방향 저장,? 0, 1, 2, 3 은 각각 좌우 위아래입니까?

} 뱀 [h * l]; -응?

Const? 차? 쉐이드? =? @'; -응? //뱀 머리?

Const? 차? Sbody? =? #'; -응? //뱀 몸?

Const? 차? 스팟? =? *'; -응? //음식?

Const? 차? 노드? =? .'; -응? //'.'지도에 빈 것으로 표시됩니까?

Void? Initial (); -응? //지도 초기화?

Void? Create _ food (); -응? //지도에 무작위로 음식을 생산합니까?

Void? 쇼 (); //화면표시 지도 갱신?

Void? Button (); -응? //버튼을 제거하고 방향을 판단합니까?

Void? 이동 (); //뱀의 움직임?

Void? Check _ border (); -응? //뱀의 머리가 한계를 넘었는지 확인해?

Void? Check_Head(int? X,? Int? Y); //뱀 머리 이동 후 위치 확인?

Int? 메인 ()

{? Initial (); -응? 쇼 (); -응? 리튼? 0; -응?

}?

Void? Initial ()? //지도 초기화?

{? Int? I,? J; -응? Int? Hx,? 하이; -응? 시스템 ("제목"? 뱀을 탐식하다 "); -응? //콘솔의 제목? 메셋 (gamemap,? ..',? Sizeof(GameMap));); -응? //초기화 지도가 모두 비어 있습니다'.'? 시스템 ("cls"); -응? Srand (시간 (0

)); //임의 시드? Hx? =? Rand () h; //뱀 머리 생성? 하이? =? Rand () l; -응? GameMap[hx][hy]? =? Shead;; -응? 뱀 [0]. x? =? Hx; -응? 뱀 [0]. y? =? 하이; -응? 뱀 [0]. now? =? -1; -응? Create _ food (); //무작위로 음식을 생산합니까? For(i? =? 0; -응? I? Lt; -응? H; -응? I++)// 지도 화면표시? {for(j? =? 0; -응? J? Lt; -응? L; -응? J++)?

Printf("c ",? Gamemap [I] [j]); -응? Printf ("\ n"); -응? }? Printf("\n 작은 c 언어 탐욕뱀 \ n "); -응? Printf ("화살표 키를 눌러 게임을 시작합니다. \ n"); -응? Getch (); //먼저 버튼을 받아 뱀이 그 방향으로 가기 시작하게 합니까? Button (); -응? //버튼을 제거하고 방향을 판단합니까?

}?

Void? Create_Food ()? //지도에 무작위로 음식을 생산합니까?

{? Int? Fx,? Fy; -응? While(1)? {? Fx? =? Rand () h; -응? Fy? =? Rand () l; -응? If(GameMap[fx][fy]? = =? .')? //뱀이 차지하는 위치에 나타날 수 없습니까? {

GameMap[fx][fy]? =? 스팟; -응? 브레크; -응? }? }?

}?

Void? Show ()? //화면표시 지도 갱신?

{? Int? I,? J; -응? While(1)? {_ sleep (500); -응? //반초 지연 (1000 은 1s), 즉 반초마다 지도를 새로 고치시겠습니까? Button (); //먼저 버튼이 움직이는 것을 판단합니까? 이동 (); -응? If (오버)? //스스로 먹거나 벽에 부딪치면 게임이 끝날까요? {

Printf("\n** 게임 종료 * * \ n "); -응?

Printf ("? Gt; _ lt; \ n "); -응?

Getchar (); -응? 브레크; -응? }? 시스템 ("cls"); //지도를 비우고 새로 고친 지도를 표시하시겠습니까? For(i? =? 0; -응? I? Lt; -응? H; -응? I++) {

For(j? =? 0; -응? J? Lt; -응? L; -응? J++)?

Printf("c ",? Gamemap [I] [j]); -응?

Printf ("\ n"); -응? }? Printf("\n 작은 c 언어 탐욕뱀 \ n "); -응? Printf ("화살표 키를 눌러 게임을 시작합니다. \ n"); -응? }?

}?

Void? Button ()? //버튼을 제거하고 방향을 판단합니까?

{? If(kbhit ()? ! =? 0)? //현재 키보드 입력이 있는지 확인하고, 있는 경우 0 이 아닌 값을 반환하고, 그렇지 않은 경우 0 을 반환합니다. {while(kbhit ()? ! =? 0)? //여러 개의 키가 있을 수 있습니다. 모두 다 가져가야 합니다. 마지막을 위주로 하시겠습니까? 키? =? Getch (); -응? //콘솔에서 키를 꺼내 키에 저장하시겠습니까? 스위치 (키)? {//왼쪽?

케이스? 75:? 뱀 [0]

. now? =? 0; -응? 브레크; -응?

//오른쪽?

케이스? 77:? 뱀 [0]. now? =? 1; 브레크; -응?

//위?

케이스? 72:? 뱀 [0]. now? =? 2; -응? 브레크; -응?

//아래?

케이스? 80:? 뱀 [0]. now? =? 3; -응? 브레크; -응? }? }?

}?

Void? 이동 ()//뱀의 움직임?

{? Int? I,? X,? Y; -응?

Int? T? =? 샘; -응? //현재 뱀의 길이를 저장하시겠습니까? //현재 뱀의 머리 위치를 기록하고 공백으로 설정하면 뱀의 머리가 먼저 이동합니까? X? =? 뱀 [0]. x; -응? Y? =? 뱀 [0]. y; -응? GameMap[x][y]? =? .'; -응? 뱀 [0]. x? =? 뱀 [0]. x? +? Dx[? 뱀 [0]. now? ]; -응? 뱀 [0]. y? =? 뱀 [0]. y? +? Dy[? 뱀 [0]. now? ]; -응? Check _ border (); //뱀의 머리가 경계를 넘었습니까? Check_Head(x,? Y); -응? //뱀 머리 이동 후 위치 조건, 매개 변수:? 뱀의 머리 시작 위치? If (합계? = =? T)? //음식을 먹지 않으면 뱀의 몸이 움직인다?

For(i? =? 1; -응? I? Lt; -응? 샘; -응? I++)? //뱀의 꼬리 노드에서 앞으로 이동하겠습니다. 이전 노드를 참조로 사용하시겠습니까? {? If(i? = =? 1)// 꼬리 노드를 null 로 설정하고 이동하시겠습니까?

GameMap[? 뱀 [I]. x? ] [? 뱀 [I]. y? ]? =? .'; -응? If(i? = =? Sum-1)? //뱀의 머리 뒤에 있는 뱀의 몸을 위한 노드, 특수처리? {?

뱀 [I]. x? =? X; -응? 뱀 [I]. y? =? Y; -응? 뱀 [I]. now? =? 뱀 [0]. now; -응? }? Else// 다른 뱀의 몸은 바로 이전 뱀의 위치로 가나요? {?

뱀 [I]. x? =? 뱀 [I+1]. x; -응? 뱀 [I]. y? =? 뱀 [I+1]. y; -응? 뱀 [I]. now? =? 뱀 [I+1]. now; -응? }? GameMap[? 뱀 [I]. x? ] [? 뱀 [I]. y? ]? =? #'; -응? //이동 후' #' 뱀 몸}?

}?

Void? Check_Border ()? //뱀의 머리가 한계를 넘었는지 확인해?

{? If (뱀 [0]. x? Lt; -응? 0? | |? 뱀 [0]. x? Gt; =? H? | |? 뱀 [0]. y? Lt; -응? 0? | |? 뱀 [0]. y? Gt; =? L)? 오버? =? 1; -응?

}?

Void? Check_Head(int? X,? Int? Y)? //뱀 머리 이동 후 위치 확인?

{? If(GameMap[? 뱀 [0]. x? ] [? 뱀 [0]. y? ]? = =? .')? //비어 있습니까? GameMap[? 뱀 [0]. x

-응? ] [? 뱀 [0]. y? ]? =? @'; -응? 엘시? If(GameMap[? 뱀 [0]. x? ] [? 뱀 [0]. y? ]? = =? *')? //음식을 위해? {?

GameMap[? 뱀 [0]. x? ] [? 뱀 [0]. y? ]? =? @';

뱀 [sum]. x? =? X; //새로 추가된 뱀은 뱀의 머리 뒤에 있는 것인가요? 뱀 [sum]. y? =? Y; -응? 뱀 [sum]. now? =? 뱀 [0]. now; -응? GameMap[? 뱀 [sum]. x? ] [? 뱀 [sum]. y? ]? =? #';

Su m++; -응?

Create _ food (); -응? //음식을 다 먹고 바로 다른 음식을 만드시겠습니까? }? 엘시?

오버? =? 1; -응?

}