C 언어 는 간단 한 뱀 탐식 게임 을 실현 한다.

5220 단어 C 언어탐식 사
본 논문 의 사례 는 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; }
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기