C 언어 는 간단 한 뱀 탐식 게임 을 실현 한다.
포인터 배열 로 뱀 을 표시 하고 p[0]은 뱀 머리 를 나타 낸다.
제어 방향:w,s,a,d->상하 좌우
j,k->가속,감속
키보드 제어 에 스 레 드 가 필요 합 니 다.
컴 파일 할 때 뒤에 추가 해 야 합 니 다. -lpthread
코드:
#include <stdio.h>
#include <pthread.h>
#include <stdlib.h>
#include <time.h>
#include <unistd.h>
#define X 20
#define Y 40
char head='@';//
char body='O';//
char a[X][Y]={'O','O','O','@'};
char *p[X*Y]={&a[0][3],&a[0][2],&a[0][1],&a[0][0]};//p[0]
int n=3; // ( )
int i,j;
int f=1; // :1. ;2. ;3. ;4. ;-1.
int us=200000;// usleep, 0.2
void right()
{
*p[n]=0;
for(i=n;i>0;i--)
{
p[i]=p[i-1];
}
*p[0]=body;
p[0]=p[0]+1;//
*p[0]=head;
}
void left()
{
*p[n]=0;
for(i=n;i>0;i--)
{
p[i]=p[i-1];
}
*p[0]=body;
p[0]=p[0]-1;
*p[0]=head;
}
void down()
{
*p[n]=0;
for(i=n;i>0;i--)
{
p[i]=p[i-1];
}
*p[0]=body;
p[0]=p[0]+Y;
*p[0]=head;
}
void up()
{
*p[n]=0;
for(i=n;i>0;i--)
{
p[i]=p[i-1];
}
*p[0]=body;
p[0]=p[0]-Y;
*p[0]=head;
}
void show()
{
system("clear");
for(i=0;i<Y;i++)
printf("-");
printf("
");
for(i=0;i<X;i++)
{
for(j=0;j<Y;j++)
{
if(a[i][j]==0)
printf(" ");
else
printf("%c",a[i][j]);
}
printf("
");
}
for(i=0;i<Y;i++)
printf("-");
printf("
w,s,a,d-> ;j,k-> ;ESC
");
}
int ran()// *
{
srand(time(NULL));
lb:
i=rand()%X;
j=rand()%Y;
// 0, *;
if(a[i][j]==0)
a[i][j]='*';
else
goto lb;
}
void eat()
{
if(f==1)//
{
if(*(p[0]+1)=='*')
{
n++;//
p[n]=p[n-1];
ran();// *
}
}
if(f==2)//
{
if(*(p[0]-Y)=='*')
{
n++;//
p[n]=p[n-1];
ran();// *
}
}
if(f==3)//
{
if(*(p[0]-1)=='*')
{
n++;//
p[n]=p[n-1];
ran();// *
}
}
if(f==4)//
{
if(*(p[0]+Y)=='*')
{
n++;//
p[n]=p[n-1];
ran();// *
}
}
}
void fail()
{
if(p[0]<&a[0][0]||p[0]>&a[X-1][Y-1])//
{
printf("fail!
");
f=-1;
}
if(f==1)//
{
for(i=n;i>0;i--)
{
if((p[0]+1)==p[i])//
{
printf("fail!
");
f=-1;
}
}
}
if(f==2)//
{
for(i=n;i>0;i--)
{
if((p[0]-Y)==p[i])//
{
printf("fail!
");
f=-1;
}
}
}
if(f==3)//
{
for(i=n;i>0;i--)
{
if((p[0]-1)==p[i])//
{
printf("fail!
");
f=-1;
}
}
}
if(f==4)//
{
for(i=n;i>0;i--)
{
if((p[0]+Y)==p[i])//
{
printf("fail!
");
f=-1;
}
}
}
}
void *key(void *arg)// :w,s,a,d-->
{
char k;
while(1)
{
k=getchar();
if(k=='w')//
f=2;
if(k=='s')//
f=4;
if(k=='a')//
f=3;
if(k=='d')//
f=1;
if(k=='j')//
us=us*4/5;
if(k=='k')//
us=us*5/4;
if(k==27)//ESC
{
printf(" !
");
f=-1;
}
usleep(100);
}
}
int main()
{
system("stty -icanon");// ,
pthread_t pid;
pthread_create(&pid , NULL , key , NULL);// ,
ran();
while(1)
{
show(); //
usleep(us);
fail(); //
eat(); // *
if(f==1)//
right();
if(f==2)//
up();
if(f==3)//
left();
if(f==4)//
down();
if(f==-1)//
{
pthread_cancel(pid);//
return -1;
}
}
return 0;
}
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
C 언어 체인 시계는 뱀을 탐식하는 작은 게임을 실현한다본고의 실례는 여러분에게 C 언어 체인표가 뱀 탐식 게임을 실현하는 구체적인 코드를 공유하여 참고하도록 하였으며, 구체적인 내용은 다음과 같다. 프로젝트 이름: 뱀놀이 운영 환경: Linux 프로그래밍 언어: C 언...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.