Snake C language code implementation (optional difficulty)

  • 2020-06-01 10:44:20
  • OfStack

In this paper, the example of C language for you to share the implementation of the snake specific code, for your reference, the specific content is as follows


/********************************************************* 
******************** Snake (optional) ******************** 
************** Producer: Xu Lizi   Date: 2012/12/31******** 
******************** Some functions can be used for reference ************************ 
**********************************************************/ 
#include<stdio.h> 
#include<conio.h> 
#include<string.h> 
#include<stdlib.h> 
#include<time.h> 
 
 
int snakey[100]={5,4,3,2,1};  /* Define the abscissa of the snake */ 
int snakex[100]={1,1,1,1,1};  /* Define the ordinate of the snake. The starting position of the snake head is ( 5 . 1 ) */ 
int life=0; /* Defining the life of a snake, 0 Is survival, 1 Said death */ 
int lenght=5;  /* Define the length of the snake 5 section */ 
 
 
char map[12][24]={"***********************", /*y*/ 
     "*      *", 
     "*      *", 
     "*      *", 
     "*      *", 
     "*      *", 
     "*      *", 
     "*      *", 
     "*      *", 
     "*      *", 
     "*      *", 
   /*x*/ "***********************"}; 
 
 
void put_money(int i,int j)  /* Put the money function, use a random number, randomly present the food */ 
{ 
  int x=0,y=0; 
  srand(time(NULL)); 
  while ( (map[y][x]==003) || (map[y][x]==002) || (map[y][x]=='*') || ((x==i)&&(y==j)) ) 
  { 
   x=rand()%21+1; 
   y=rand()%10+1; 
  } 
  map[y][x]='$'; 
  return; 
} 
 
 
void output()  /* The output */ 
{ 
 system("cls"); 
 int i,j; 
 for(i=0; i<12; i++) 
 { 
   for(j=0; j<23; j++) printf("%c", map[i][j]); 
   printf("\n"); 
 } 
 return; 
} 
 
 
void gameover()  /* Game over */ 
{ 
  life=1; 
  printf(" You lose, stupid !!!\n"); 
  return; 
} 
 
 
void turn_up()  /* Move up */ 
{ 
  system("cls"); 
  int i; 
  if ( (snakex[0]==1) || (map[snakex[0]-1][snakey[0]]==003) ) gameover(); else { 
  if (map[snakex[0]-1][snakey[0]]=='$') 
  { 
   put_money( snakey[0], snakex[0]-1 ); 
   lenght++; 
   map[snakex[lenght-1]][snakey[lenght-1]]=003; 
  } 
  for(i=lenght; i>0; i--) 
  { 
   snakex[i]=snakex[i-1]; 
   snakey[i]=snakey[i-1]; 
  } 
  map[snakex[lenght]][snakey[lenght]]=' '; 
  snakex[0]--; 
  for(i=lenght-1; i>0; i--) map[snakex[i]][snakey[i]]=003; 
  map[snakex[0]][snakey[0]]=002; 
  output(); 
  } 
  return; 
} 
 
 
void turn_down()   /* down */ 
{ 
  system("cls"); 
  int i; 
  if ( (snakex[0]==10) || (map[snakex[0]+1][snakey[0]]==003) ) gameover();else { 
  if (map[snakex[0]+1][snakey[0]]=='$') 
  { 
   put_money(snakey[0],snakex[0]+1); 
   lenght++; 
   map[snakex[lenght-1]][snakey[lenght-1]]=003; 
  } 
  for(i=lenght; i>0; i--) 
  { 
   snakex[i]=snakex[i-1]; 
   snakey[i]=snakey[i-1]; 
  } 
  snakex[0]++; 
  map[snakex[lenght]][snakey[lenght]]=' '; 
  for(i=lenght-1; i>0; i--) map[snakex[i]][snakey[i]]=003; 
  map[snakex[0]][snakey[0]]=002; 
  output(); 
  } 
  return; 
} 
 
 
void turn_left()  /* To the left */ 
{ 
  system("cls"); 
  int i; 
  if ( (snakey[0]==1) || (map[snakex[0]][snakey[0]-1]==003) ) gameover();else { 
  if (map[snakex[0]][snakey[0]-1]=='$') 
  { 
   put_money(snakey[0]-1,snakex[0]); 
   lenght++; 
   map[snakex[lenght-1]][snakey[lenght-1]]=003; 
  } 
  for(i=lenght; i>0; i--) 
  { 
   snakex[i]=snakex[i-1]; 
   snakey[i]=snakey[i-1]; 
  } 
  map[snakex[lenght]][snakey[lenght]]=' '; 
  snakey[0]--; 
  for(i=lenght-1; i>0; i--) map[snakex[i]][snakey[i]]=003; 
  map[snakex[0]][snakey[0]]=002; 
  output(); 
  } 
  return; 
} 
 
 
void turn_right()  /* To the right */ 
{ 
  system("cls"); 
  int i; 
  if ( (snakey[0]==21) || (map[snakex[0]][snakey[0]+1]==003) ) gameover();else { 
  if (map[snakex[0]][snakey[0]+1]=='$') 
  { 
   put_money(snakey[0]+1,snakex[0]); 
   lenght++; 
   map[snakex[lenght-1]][snakey[lenght-1]]=003; 
  } 
  for(i=lenght; i>0; i--) 
  { 
   snakex[i]=snakex[i-1]; 
   snakey[i]=snakey[i-1]; 
  } 
  map[snakex[lenght]][snakey[lenght]]=' '; 
  snakey[0]++; 
  for(i=lenght-1; i>0; i--) map[snakex[i]][snakey[i]]=003; 
  map[snakex[0]][snakey[0]]=002; 
  output(); 
  } 
  return; 
} 
 
 
int main() 
{ 
 int i,timeover,hard; 
 long start; 
 char name , direcation; 
 
 
 printf("\n  Moving up: W  ; Moving down: S ;  Moving to the left: A  ;   Moving to the right: D \n"); 
 printf("\t Please select difficulty (number) \n\t points 1~5 level , Represent the \n\t1 difficult ,2 Upper middle ,3 In the ,4 The middle and lower 5, Yi: \n"); 
 scanf("%d",&hard); 
 system("cls"); 
 
 
 for(i=1;i<5;i++) map[1][i]=003;  /* Output snake-body. */ 
 map[1][5]=002;  /* Output the snake */ 
 
 
 put_money(0,0); 
 output(); 
 
 
 while(life!=1) /* The cycle ends when the snake dies */ 
 { 
  /* The function that makes the snake run automatically ****** With reference to */ 
  timeover=1; 
  start=clock(); 
  while((timeover=(clock()-start<=hard*100))&&!kbhit());  // Difficulty setting  
  if(timeover) 
  { 
     direcation=getch(); 
  } 
  /* The function that makes the snake run automatically ****** With reference to */ 
 
  switch(direcation) 
  { 
    case 'w':turn_up();break; 
    case 's':turn_down();break; 
    case 'a':turn_left();break; 
    case 'd':turn_right();break; 
  } 
 } 
 return 0; 
} 

Related articles: