푸 시 박스 게임 C 언어 구현 코드
이 게임 은 Linux 환경 에서 프로 그래 밍 한 것 으로 사용 되 는 도 구 는 ubuntu,gcc 컴 파일 러 입 니 다.
먼저 상 자 를 밀어 내 는 지 도 는 클래식 게임 에 따라 상자 중의 한 폭 의 지 도 를 만들어 서 만 들 었 습 니 다.그림 은 다음 과 같 습 니 다.
그림 형식 으로 이 그림 을 실현 하 는 것 은 프로 그래 밍 을 처음 배 운 학생 들 에 게 실현 하기 어렵 기 때문에 우 리 는 문자 로 대체 하 는 형식 으로 이 지 도 를 실현 하 는 것 을 선택한다.
우 리 는 2 를 배열 로 하 는 방식 으로 이 지 도 를 저장 합 니 다.구체 적 인 숫자 와 문자 의 의 미 는 다음 과 같 습 니 다.
0 printf(" "); 길.
2 printf("@"); 사람.
3 printf("#"); 벽.
4 printf("$"); 상자.
5 printf("O"); 목표 점
7 printf("@"); 사람.
9 printf("$"); 상자.
코드 는 다음 과 같 습 니 다:
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <getch.h>
int mx = 0;
int my = 0;
int step = 0;
char map[8][8] = {
{0,0,3,3,3,3,0,0},
{0,0,3,5,5,3,0,0},
{0,3,3,0,5,3,3,0},
{0,3,0,0,4,5,3,0},
{3,3,0,4,0,0,3,3},
{3,0,0,3,4,4,0,3},
{3,0,0,2,0,0,0,3},
{3,3,3,3,3,3,3,3}
};
void show_map(void)
{
for(int i=0;i<8;i++)
{
for(int j=0;j<8;j++)
{
if(0 == map[i][j])
{
printf(" ");
}
else if(2 == map[i][j])
{
printf("@ ");
}
else if(3 == map[i][j])
{
printf("# ");
}
else if(4 == map[i][j])
{
printf("$ ");
}
else if(5 == map[i][j])
{
printf("O ");
}
else if(7 == map[i][j])
{
printf("@ ");
}
else if(9 == map[i][j])
{
printf("$ ");
}
}
printf("
");
}
}
void up(void)
{
for(int i=0; i<8;i++)
{
for(int j=0; j<8;j++)
{
if(2 == map[i][j] || 7 == map[i][j])
{
mx =i;
my =j;
}
}
}
if(3 == map[mx-1][my])
{
return;
}
else if(0 == map[mx-1][my] || 5 == map[mx-1][my])
{
map[mx-1][my] += 2;
map[mx][my] -= 2;
step++;
}
else if(4 == map[mx-1][my] || 9 == map[mx-1][my])
{
if(0 == map[mx-2][my])
{
map[mx-2][my] += 4;
map[mx-1][my] -= 2;
map[mx][my] -= 2;
step++;
}
else if(5 == map[mx-2][my])
{
map[mx-2][my] += 4;
map[mx-1][my] -= 2;
map[mx][my] -= 2;
step++;
}
else
{
return;
}
}
}
void down(void)
{
for(int i=0; i<8;i++)
{
for(int j=0; j<8;j++)
{
if(2 == map[i][j] || 7 == map[i][j])
{
mx =i;
my =j;
}
}
}
if(3 == map[mx+1][my])
{
return;
}
else if(0 == map[mx+1][my] || 5 == map[mx+1][my])
{
map[mx+1][my] += 2;
map[mx][my] -= 2;
step++;
}
else if(4 == map[mx+1][my] || 9 == map[mx+1][my])
{
if(0 == map[mx+2][my])
{
map[mx+2][my] += 4;
map[mx+1][my] -= 2;
map[mx][my] -= 2;
step++;
}
else if(5 == map[mx+2][my])
{
map[mx+2][my] += 4;
map[mx+1][my] -= 2;
map[mx][my] -= 2;
step++;
}
else
{
return;
}
}
}
void left(void)
{
for(int i=0; i<8;i++)
{
for(int j=0; j<8;j++)
{
if(2 == map[i][j] || 7 == map[i][j])
{
mx =i;
my =j;
}
}
}
if(3 == map[mx][my-1])
{
return;
}
else if(0 == map[mx][my-1] || 5 == map[mx][my-1])
{
map[mx][my-1] += 2;
map[mx][my] -= 2;
step++;
}
else if(4 == map[mx][my-1] || 9 == map[mx][my-1])
{
if(0 == map[mx][my-2])
{
map[mx][my-2] += 4;
map[mx][my-1] -= 2;
map[mx][my] -= 2;
step++;
}
else if(5 == map[mx][my-2])
{
map[mx][my-2] += 4;
map[mx][my-1] -= 2;
map[mx][my] -= 2;
step++;
}
else
{
return;
}
}
}
void right(void)
{
for(int i=0; i<8;i++)
{
for(int j=0; j<8;j++)
{
if(2 == map[i][j] || 7 == map[i][j])
{
mx =i;
my =j;
}
}
}
if(3 == map[mx][my+1])
{
return;
}
else if(0 == map[mx][my+1] || 5 == map[mx][my+1])
{
map[mx][my+1] += 2;
map[mx][my] -= 2;
step++;
}
else if(4 == map[mx][my+1] || 9 == map[mx][my+1])
{
if(0 == map[mx][my+2])
{
map[mx][my+2] += 4;
map[mx][my+1] -= 2;
map[mx][my] -= 2;
step++;
}
else if(5 == map[mx][my+2])
{
map[mx][my+2] += 4;
map[mx][my+1] -= 2;
map[mx][my] -= 2;
step++;
}
else
{
return;
}
}
}
void start_soko(void)
{
FILE* frp = fopen("soko.bin","r");
if(NULL == frp)
{
printf(" !
");
return;
}
fread(map,1,64,frp);
fclose(frp);
}
void exit_soko(void)
{
FILE* fwp = fopen("soko.bin","w");
printf("____");
if(NULL == fwp)
{
printf(" !
");
}
fwrite(map,1,64,fwp);
fclose(fwp);
}
int main()
{
start_soko();
while(true)
{
system("clear");
//
show_map();
//
int cnt = 0;
for(int i=0; i<8; i++)
{
for(int j=0; j<8;j++)
{
if(9 == map[i][j])
{
cnt++;
}
}
}
if(4 == cnt)
{
printf(" , %d !
",step);
return 0;
}
printf("%d
",cnt);
//
switch(getch())
{
case 'w':up();break;
case 's':down();break;
case 'a':left();break;
case 'd':right();break;
case 'q':exit_soko();return 0;
default:
puts(" !");
}
}
exit_soko();
}
더 많은 재 미 있 는 클래식 게임 을 통 해 주 제 를 실현 하고 여러분 에 게 공유 합 니 다.C++클래식 게임 모음
python 클래식 게임 모음
python 러시아 블록 게임 집합
JavaScript 클래식 게임 을 계속 합 니 다.
자바 클래식 게임 모음
javascript 고전 게임 모음
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
C 언어 체인 시계는 뱀을 탐식하는 작은 게임을 실현한다본고의 실례는 여러분에게 C 언어 체인표가 뱀 탐식 게임을 실현하는 구체적인 코드를 공유하여 참고하도록 하였으며, 구체적인 내용은 다음과 같다. 프로젝트 이름: 뱀놀이 운영 환경: Linux 프로그래밍 언어: C 언...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.