현재 위치 - 주공해몽공식사이트 - 랜덤 번호 뽑기 점술 - C 언어로 스네이크 쓰기

C 언어로 스네이크 쓰기

# include & ltstdio.h & gt

# include & ltgraphics.h & gt

# include & ltstdlib.h & gt

# include & ltdos.h & gt/* 가 참조하는 라이브러리 함수 */

# 왼쪽 0x4b00 정의

# 오른쪽 0x4d00 정의

# 0x5000 아래로 정의

# 최대 0x4800 으로 정의

# defineesc0x011b/* 매크로 정의 키 이름 */

# N 200 정의

Int I, 키

Int 레벨 /* 게임 등급 */

Int 점수 = 0; /* 점수 */

Int gamespeed/* 게임 속도 */

구조식품

{

Int x;; /* 음식 가로좌표 */

Int y;; /* 음식의 세로좌표 */

Int yes/* 음식 변수가 나타날지 결정합니다 */

} 음식 /* 음식의 구조 */

구조 뱀

{

Int x [n];

Int y [n];

Int 노드 /* 뱀의 매듭 수 */

Int 방향 /* 뱀의 이동 방향 */

Int life/* 뱀의 생명, 0 은 살아있다, 1 은 죽었다 */

} 뱀; /* 뱀의 구조 */

Void choice levle (void) : /* 게임 레벨 선택 */

Voidinit (void); /* 그래픽 드라이버 */

Void Close (유효하지 않음); /* 차트 끝 */

Void DRAW (유효하지 않음); /* 게임 영역 */

Void gameover (void); /* 게임 끝내기 */

Void 게임 (void); /* 게임을 하는 구체적인 절차 */

Void PrScore(void);) : /* 출력 결과 */

/* 주 함수 */

잘못된 탐색기 (잘못된 탐색기)

{

Init (); /* 그래픽 드라이버 */

Choiceleve (); /* 게임 레벨 선택 */

Draw (); /* 게임 영역 */

게임성 (); /* 게임을 하는 구체적인 절차 */

닫기 (); /* 차트 끝 */

}

/* 그래픽 드라이버 */

Void 초기화 (void)

{

Int gd=DETECT, GM;

Initgraph (& Gd, & ampgm, "\ \ 터보 2"); /* 그래픽 시스템 초기화 */

Cleardevice (); /* 그래픽 인터페이스 지우기 */

}

/* 게임 레벨 선택 */

유효하지 않은 선택 값 (유효하지 않음)

{문자

이름 [20]; Setcolor (노란색); Settextstyle (0,0,6); Outtextxy( 150, 150, "뱀"); Setcolor (녹색); Settextstyle (0,0,1); Outtextxy (200,250, "제발

영어 이름을 넣으십시오: "); Outtextxy(200, 270, "선택 레벨

1-9. "); Outtextxy (300,320, "이름: 양자용"); /* 제조업체 이름 *

/outtextxy (300,350, "번호: 0902060226"); /* 프로듀서 학생증 *

/outtextxy (300,380, "범주: 컴퓨터 과학

0602 "); /* 생산자 클래스 */getch (); Printf ("푸틴, 제발

이름: "); 가져오기 (이름); Printf ("선택하십시오

Levle: "); Scanf("%d ",& 수준); Gamespeed = 100000-400 * 레벨 -300 * 레벨 * 레벨; If (레벨 > 9 | | 레벨<1) {cleardevice ();

/* 그래픽 인터페이스 지우기 */setcolor (노란색); /* 글꼴 색상 설정 */settextstyle (0,0,2);

/* 글꼴 유형 설정 */outtextxy (150,200, "레벨 입력 오류");

/* 텍스트 표시 */getch (); 레벨 =1; }

}

유효하지 않은 도면 (유효하지 않은 도면)

{cleardevice (); /* 화면 정리 */setcolor (2); Setlinestyle(SOLID_LINE, 0, thick _ width); /* 선종류 설정 */rectangle (45,45,465,325); }

/* 게임을 하는 구체적인 절차 */

잘못된 게임 (void)

{setcolor (5); Setlinestyle(SOLID_LINE, 0, thick _ width); /*

선종류 설정 */randomize (); /* 난수 생성기 */food.yes =1; /* 1 새로운 음식이 나타나야 한다는 것을 의미하고, 0 은 음식이 이미 존재한다는 것을 의미합니다. *

/snake.life = 0; /* alive */snake.direction =1; /* 오른쪽 방향 */snake.x [0] = 320;

Snake.y [0] = 240; /* 뱀 머리 */뱀. x [1] = 330; Snake.y [1] = 240;

/* 두 번째 뱀의 위치 */snake.node = 3; /* 섹션 수 */prscore (); /* 출력 점수 */while( 1)/* 게임을 반복할 수 있습니다. ESC 키를 누릅니다.

빔 */{while (! Khit ())/* 뱀이 키를 누르지 않고 움직인다 */{if(food.yes== 1)/* 새로운 음식이 나타나야 한다 *

/{food.x = rand ()% 360+70; Food.y = rand ()% 250+60; 그리고 (food.x% 10! =0)/* 음식이 무작위로 나타난 후,

뱀이 */food.x++; 그리고 (food.y% 10! = 0) food.y++; Food.yes = 0;

/* 화면에 음식이 있어요 */}

If(food.yes==0)/* 화면에 음식이 있으면 */

{

Setcolor (녹색);

직사각형 (food.x, food.y, food.x+ 10, food.y-10);

}

For (I = snake.node-1; 나>0; 나-)/* 뱀의 모든 부분이 앞으로 움직인다 */

{

Snake.x [I] = snake.x [I-1];

Snake.y [I] = snake.y [I-1];

}

/* 1, 2,3,4 는 좌우 위아래를 의미하며, 뱀의 머리는 이 컨트롤을 통해 움직일 수 있습니다. */

스위치 (뱀 방향)

{

케이스1:snake.x [0]+=10; 깨뜨리다

사례 2: snake.x [0]-=10; 깨뜨리다

사례 3: snake.y [0]-=10; 깨뜨리다

사례 4: snake.y [0]+=10; 깨뜨리다

}

For(I = 3;; 나 & ltsnake. 노드; I++)/* 뱀의 4 절에서 자신을 맞혔는지 판단한다. 뱀의 머리에는 두 개의 섹션이 있고, 3 절은 몸을 돌릴 수 없기 때문이다. */

{

If (snake.x [I] = = snake.x [0] & & ampsnake.y[i]==snake.y[0])

{

Gameover (); /* 실패 표시 */

Snake.life =1; /* 뱀이 죽다 */

깨뜨리다

}

}

/* 만약 뱀의 머리가 벽에 닿으면, 뱀의 머리는 맞은편 벽에서 나온다. */

If (snake.x [0] < 50)

{snake.x [0] = 450;

/* 뱀의 머리는 왼쪽 경계를 넘어 오른쪽 경계에서 */snake.y [0] = snake.y [0]; /* 세로좌표는 변경되지 않습니다 */for (I = snake.node-1;

나>0; I-) {snake.x [I] = snake.x [I-1]; Snake.y [I] = snake.y [I-1];

/* 뱀의 다른 매듭은 앞으로 움직인다 */}

{

Setfillstyle(SOLID_FILL, 0); /* 채우기 모드 및 색상을 설정합니다. 0 은 검은색 */

Bar (50,55,455,315); /*bar 는 함수 */

}

}

기타

If (snake.x [0] > 450)

{snake.x [0] = 50;

/* 뱀의 머리가 오른쪽 경계를 넘으면 뱀의 머리는 왼쪽 경계에서 */snake.y [0] = snake.y [0]; /* 세로좌표는 변경되지 않습니다 */for(i=snake.node-

1; 나>0; I-) {snake.x [I] = snake.x [I-1]; Snake.y [I] = snake.y [I-1];

/* 뱀의 다른 매듭은 앞으로 움직인다 */}

{

Setfillstyle(SOLID_FILL, 0); /* 채우기 모드 및 색상을 설정합니다. 0 은 검은색 */

Bar (50,55,455,315); /*bar 는 함수 */

}

}

기타

If (snake.y [0] < 60)

{snake.y [0] = 320;

/* 뱀의 머리가 위쪽 경계를 넘으면 아래쪽 경계에서 */snake.x [0] = snake.x [0]; /* 가로좌표는 변경되지 않습니다 */for (I = snake.node-1;

나>0; I-) {snake.x [I] = snake.x [I-1]; Snake.y [I] = snake.y [I-1];

/* 뱀의 다른 매듭은 앞으로 움직인다 */}

{

Setfillstyle(SOLID_FILL, 0); /* 채우기 모드 및 색상을 설정합니다. 0 은 검은색 */

Bar (50,55,455,315); /*bar 는 함수 */

}

}

기타

If (snake.y [0] > (320)

{snake.y [0] = 60;

/* 뱀의 머리가 아래쪽 경계를 넘으면 위쪽 경계에서 */snake.x [0] = snake.x [0]; /* 가로좌표는 변경되지 않습니다 */for (I = snake.node-1;

나>0; I-) {snake.x [I] = snake.x [I-1]; Snake.y [I] = snake.y [I-1];

/* 뱀의 다른 매듭은 앞으로 움직인다 */}

{

Setfillstyle(SOLID_FILL, 0); /* 채우기 모드 및 색상을 설정합니다. 0 은 검은색 */

Bar (50,55,455,315); /*bar 는 함수 */

}

}

If(snake.life== 1)/* 뱀이 죽으면 내부 루프에서 뛰어내려 다시 시작 */

깨뜨리다

If (snake.x [0] = = food.x & & ampSnake.y[0]==food.y)/* 음식 먹기 */

{

Setcolor (0); /* 그림에서 음식 제거 */

직사각형 (food.x, food.y, food.x+ 10, food.y-10); /* 현재 선종류 및 색상을 사용하여 직사각형 그리기 */

Snake.x [snake.node] =-20; Snake.y [snake.node] =-20;

/* 먼저 새 세그먼트를 보이지 않는 곳에 두고 다음 루프에서 이전 세그먼트의 위치를 취한다 */

Snake.node++; /* 뱀의 몸은 긴 구간이 있다 */

Food.yes =1; /* 새 음식은 화면에 나타나야 합니다 */

점수+=10; /* 음식을 한 번 먹을 때마다 점수가 10 점 */

(점수% 100==0)

{레벨++; Gamespeed =100000-400 * 레벨-

레벨 300 * 레벨 * 레벨; /* 먹을 때마다 10 을 먹을 때마다 한 단계 올라서 */Prscore (); /* 새 점수 출력 */setcolor (노란색);

/* 글꼴 색상 설정 */settextstyle (0,0,4); /* 글꼴 유형 설정 */outtextxy (150,200, "levelup");

/* 텍스트 표시 */if (level = =10) {level =1,gamespeed =1;

레벨 300 * 레벨 * 레벨; }

지연 (6000000);

지연 (6000000);

지연 (6000000);

지연 (6000000);

지연 (6000000);

지연 (6000000);

지연 (6000000);

Bar (50,55,455,315); /*bar 는 함수 */

}

Prscore (); /* 새 점수 출력 */

}

Set color (4); /* 뱀 한 마리 그리기 */

For(I = 0;; 나 & ltsnake. 노드; I++)

직사각형 (snake.x[i], snake.y[i], snake.x[i]+ 10,

Snake.y [I]-10);

지연 (gamespeed); /* 게임 속도 제어 */

Setcolor (0);

직사각형 (snake.x[snake.node- 1], snake.y[snake.node- 1],

Snake.x [snake.node-1]+10, snake.y [snake.node-/kloc]

} /*endwhile (! Khit) */* 뱀의 마지막 단락을 검은색으로 빼라 */

If(snake.life== 1)/* 뱀이 죽으면 순환에서 뛰어내린다 */

깨뜨리다

키 = BIOS 키 (0); /* 수신 버튼 */

If (키 = = ESC)/* ESC 키를 눌러 종료 */

깨뜨리다

기타

If (키 = = up & & amp 뱀, 방향! =4)

/* 반대 방향으로 이동할지 여부를 결정합니다 */

Snake.direction = 3;

기타

If (키 = = right & & amp 뱀, 방향! =2)

Snake.direction =1;

기타

If (키 = = left & & amp 뱀, 방향! = 1)

Snake.direction = 2;

기타

If (키 = = down & & amp 뱀, 방향! =3)

Snake.direction = 4;

}/*endwhile( 1)*/

}

/* 게임 종료 */

유효하지 않은 게임 종료 (유효하지 않음)

{

Cleardevice (); /* 화면 비우기 */

Prscore ();

Setcolor (빨간색); /* 글꼴 색상 설정 */

Settextstyle (0,0,4); /* 글꼴 유형 설정 */

Outtextxy(200, 200, "게임 끝"); /* 텍스트 표시 */

Getch ();

}

/* 출력 결과 및 게임 레벨 */

유효하지 않은 PrScore (유효하지 않음)

{

Charstr1[20]; /* 문자 배열 설정 */

Setfillstyle(SOLID_FILL, 0);

가자 (50, 15, 390, 35); /* 채우기 직사각형 */

Set color (6); /* 텍스트 색상 설정 */

Settextstyle (0,0,2); /* 배열 표시 위치 설정 */

스프린트 (str1,"점수 %d 레벨 %d", 점수, 레벨); /* 배열 내용 표시 */

Outtextxy (55,20, str1);

Setcolor (노란색); /* 글꼴 색상 설정 */

Settextstyle (0,0,2); /* 글꼴 유형 설정 */

Outtextxy (250,400, "exit = ESC"); /* 텍스트 표시 */

}

무효 마감 (무효)

{

Closegraph ();

}