C 언어 코드
이번 게임 은 상 자 를 밀어 서 첫 번 째 관문 을 닫 는 가장 쉬 운 게임 입 니 다.
상세 한 주석 이 있 습 니 다.다음은 만들어 진 게임 인터페이스 입 니 다.
게임 조작 설명 과 기능 설명:
1.wasd 에 따라 소인 의 상하 좌우 이동 을 제어 합 니 다.
2、r 누 르 고 게임 다시 시작
3.게임 시작 조작 안내
4,게임 종료 승리 알림
게임 원리 분석
1.게임 시작 시 별 개수=상자 별 개수 시 게임 승리.
2.r 키 를 누 르 고 게임 을 다시 시작 합 니 다.우 리 는 하나의 양 map 를 정의 해 야 합 니 다.1[8][8]은 게임 의 초기 화면 을 저장 합 니 다.작업 할 때 우 리 는 맵[8][8]에 값 을 부여 하여 다시 제자리 로 돌아 갈 수 있 도록 합 니 다.여 기 는 memcpy()함수 가 사 용 됩 니 다.
3.wasd 는 상하 좌우 로 인물 이동 을 조작 하 는 것 을 대표 하고 각각 함 수 를 정의 해 야 합 니 다.
4.인물 의 이동 을 판단 하기 전에 우 리 는 인물 의 위 치 를 정 해 야 한다.여기 서 우 리 는 find()함수 로 정의 한다.
먼저 파일 부터 소개 합 니 다.
#include<stdio.h>
#include<stdlib.h> //malloc()
#include<string.h> //memcpy()
#include<conio.h> //getch()
함수 이름:malloc함수 원형:void*malloc(unsigned size);
함수 기능:size 바이트 의 저장 소 할당
함수 반환:분 배 된 메모리 영역 주소,메모리 가 부족 하면 0 을 되 돌려 줍 니 다.
함수 함수:memcpy
함수 원형:void*memcpy(void*dest,const void*src,sizet n);
함수 기능:원본 src 가 가리 키 는 메모리 주소 의 시작 위치 부터 n 개의 바이트 를 대상 dest 가 가리 키 는 메모리 주소 의 시작 위치 로 복사 합 니 다.
함수 반환:함수 가 dest 를 가리 키 는 지침 을 되 돌려 줍 니 다.
함수 이름:getch
함수 원형:int getch(void);
함수 기능:콘 솔 에서 문 자 를 읽 지만 화면 에 표시 되 지 않 습 니 다.
함수 반환:읽 은 문자
위의 그림 은 간단 한 8*8 의 그림 입 니 다.우 리 는 2 차원 배열 을 정의 하여 전체 그림 을 저장 하고 0,1,2,3,4 로 게임 인터페이스의 모든 기 호 를 대표 합 니 다.코드 는 다음 과 같 습 니 다:
int map_1[8][8]={
{0,0,1,1,1,0,0,0},
{0,0,1,4,1,0,0,0},
{0,0,1,2,1,1,1,1},
{1,1,1,0,0,2,4,1},
{1,4,0,2,3,1,1,1},
{1,1,1,1,2,1,0,0},
{0,0,0,1,4,1,0,0},
{0,0,0,1,1,1,0,0}
};
전역 변수 정의:
int x, y;
int map[8][8] = {0};
선언 함수 원형:
int count1(); //
int count2(); //
int up();
int down();
int left();
int right();
int shuchu();
int find(); //
int zhujiemian(); //
이어서 우 리 는 모든 숫자 에 그들 이 대표 하 는 기 호 를 부여 합 니 다.코드 는 다음 과 같 습 니 다.
int shuchu()
{
for(x=0; x<8; x++)
{
for(y=0; y<8; y++)
{
if(map[x][y] == 1)
printf("■"); //
if(map[x][y] == 3)
printf("⊙"); //
if(map[x][y] == 2)
printf("□"); //
if(map[x][y] == 4)
printf("☆"); //
if(map[x][y] == 0)
printf(" "); //
if(map[x][y] == 5)
printf("★"); //
}
printf("
");
}
return 0;
}
이어서 우 리 는 게임 을 시작 하기 전의 메 인 인터페이스 로 게임 방법 을 제시 해 야 한다.코드 는 다음 과 같다.
//
int zhujiemian()
{
printf("*************************
"
"**** ~*****
"
"**** : ************
"
"**** wasd ****
"
"**** r *******
"
"*************************
");
}
그 다음 에 인물 이동 을 조작 하려 면 먼저 화면 에 있 는 인물 의 위 치 를 찾 아야 한다.
//
int find()
{
for(x=0; x<8; x++)
for(y=0; y<8; y++)
{
if(map[x][y] == 3)
return 0;
}
return 0;
}
게임 시작 전 별의 개수 와 상자 가 별의 위치 에 도착 한 개 수 를 기록 합 니 다.
//
int count1()
{
int n=0;
for(x=0; x<8; x++)
for(y=0; y<8; y++)
{
if(map[x][y] == 4)
n++;
}
return n;
}
//
int count2()
{
int m=0;
for(x=0; x<8; x++)
for(y=0; y<8; y++)
{
if(map[x][y] == 5)
m++;
}
return m;
}
이어서 wasd 네 방향 에 있 는 인물 의 이동 을 판단 하고 인물 의 이동 을 확정한다.
// w
int up()
{
if(map[x][y] == 3) //
{
if(map[x-1][y] == 0) //
{
map[x-1][y] = 3;
map[x][y] = 0;
}
if(map[x-1][y] == 2 && map[x-2][y] == 4) /* , */
{
map[x][y] = 0;
map[x-1][y] = 3;
map[x-2][y] = 5;
}
}
return 0;
}
// d
int down()
{
if(map[x][y] == 3) //
{
if(map[x+1][y] == 0) //
{
map[x+1][y] = 3;
map[x][y] = 0;
}
if(map[x+1][y] == 2 && map[x+2][y] == 4) /* */
{
map[x][y] = 0;
map[x+1][y] = 3;
map[x+2][y] = 5;
}
}
return 0;
}
// a
int left()
{
if(map[x][y] == 3)
{
if(map[x][y-1] == 0) //
{
map[x][y-1] = 3;
map[x][y] = 0;
}
if(map[x][y-1] == 2 && map[x][y-2] == 4) /* */
{
map[x][y] = 0;
map[x][y-1] = 3;
map[x][y-2] = 5;
}
if(map[x][y-2] == 0 && map[x][y-1] == 2) /* */
{
map[x][y] = 0;
map[x][y-1] = 3;
map[x][y-2] = 2;
}
}
return 0;
}
// d
int right()
{
if(map[x][y] == 3)
{
if(map[x][y+1] == 0) //
{
map[x][y+1] =3;
map[x][y] = 0;
}
if(map[x][y+1] == 2 && map[x][y+2] == 4)/* */
{
map[x][y] = 0;
map[x][y+1] = 3;
map[x][y+2] = 5;
}
}
return 0;
}
마지막 으로 가장 중요 한 주 함수 입 니 다.
int main()
{
int n,m;
system("title ~"); //
memcpy(map, map_1, sizeof(map_1));
zhujiemian();
getch();
system("cls"); //
n=count1();
while(1)
{
system("cls");
shuchu();
m= count2();
find();
switch(getch())
{
case 'w':up(); break;
case 's':down(); break;
case 'a':left(); break;
case 'd':right(); break;
case 'r':memcpy(map, map_1, sizeof(map_1)); break;
}
if(n==m)
{
system("cls");
printf(" ~
");
getch();
return 0;
}
}
}
다음은 전체 프로그램 을 보 여 줍 니 다.gcc 컴 파일 을 통 해 실행 할 수 있 습 니 다.코드 는 다음 과 같 습 니 다.
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
int x=0,y=0;
int map[8][8]={0};
//
int map_1[8][8]={
{0,0,1,1,1,0,0,0},
{0,0,1,4,1,0,0,0},
{0,0,1,2,1,1,1,1},
{1,1,1,0,0,2,4,1},
{1,4,0,2,3,1,1,1},
{1,1,1,1,2,1,0,0},
{0,0,0,1,4,1,0,0},
{0,0,0,1,1,1,0,0}
};
int count1();
int count2();
int ();
up();
int down();
int left();
int right
int shuchu();
int find();
int zhujiemian();
int main()
{
int n,m;
system("title ~");
memcpy(map, map_1, sizeof(map_1));
zhujiemian();
getch();
system("cls");
n=count1();
while(1)
{
system("cls");
shuchu();
m= count2();
find();
switch(getch())
{
case 'w':up(); break;
case 's':down(); break;
case 'a':left(); break;
case 'd':right(); break;
case 'r':memcpy(map, map_1, sizeof(map_1)); break;
}
if(n==m)
{
system("cls");
printf(" ~
");
getch();
return 0;
}
}
}
// w
int up()
{
if(map[x][y] == 3) //
{
if(map[x-1][y] == 0) //
{
map[x-1][y] = 3;
map[x][y] = 0;
}
if(map[x-1][y] == 2 && map[x-2][y] == 4) // ,
{
map[x][y] = 0;
map[x-1][y] = 3;
map[x-2][y] = 5;
}
}
return 0;
}
// d
int down()
{
if(map[x][y] == 3)
{
if(map[x+1][y] == 0)
{
map[x+1][y] = 3;
map[x][y] = 0;
}
if(map[x+1][y] == 2 && map[x+2][y] == 4)
{
map[x][y] = 0;
map[x+1][y] = 3;
map[x+2][y] = 5;
}
}
return 0;
}
// a
int left()
{
if(map[x][y] == 3)
{
if(map[x][y-1] == 0)
{
map[x][y-1] = 3;
map[x][y] = 0;
}
if(map[x][y-1] == 2 && map[x][y-2] == 4)
{
map[x][y] = 0;
map[x][y-1] = 3;
map[x][y-2] = 5;
}
if(map[x][y-2] == 0 && map[x][y-1] == 2)
{
map[x][y] = 0;
map[x][y-1] = 3;
map[x][y-2] = 2;
}
}
return 0;
}
// d
int right()
{
if(map[x][y] == 3)
{
if(map[x][y+1] == 0)
{
map[x][y+1] =3;
map[x][y] = 0;
}
if(map[x][y+1] == 2 && map[x][y+2] == 4)
{
map[x][y] = 0;
map[x][y+1] = 3;
map[x][y+2] = 5;
}
}
return 0;
}
int shuchu()
{
for(x=0; x<8; x++)
{
for(y=0; y<8; y++)
{
if(map[x][y] == 1)
printf("■"); //
if(map[x][y] == 3)
printf("⊙"); //
if(map[x][y] == 2)
printf("□"); //
if(map[x][y] == 4)
printf("☆"); //
if(map[x][y] == 0)
printf(" "); //
if(map[x][y] == 5)
printf("★"); //
}
printf("
");
}
return 0;
}
//
int find()
{
for(x=0; x<8; x++)
for(y=0; y<8; y++)
{
if(map[x][y] == 3)
return 0;
}
return 0;
}
//
int count1()
{
int n=0;
for(x=0; x<8; x++)
for(y=0; y<8; y++)
{
if(map[x][y] == 4)
n++;
}
return n;
}
//
int count2()
{
int m=0;
for(x=0; x<8; x++)
for(y=0; y<8; y++)
{
if(map[x][y] == 5)
m++;
}
return m;
}
//
int zhujiemian()
{
printf("*************************
"
"*** ~***
"
"********* : *******
"
"** wasd **
"
"** r ******
"
"*************************
");
}
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
C 언어 체인 시계는 뱀을 탐식하는 작은 게임을 실현한다본고의 실례는 여러분에게 C 언어 체인표가 뱀 탐식 게임을 실현하는 구체적인 코드를 공유하여 참고하도록 하였으며, 구체적인 내용은 다음과 같다. 프로젝트 이름: 뱀놀이 운영 환경: Linux 프로그래밍 언어: C 언...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.