C++

Snake C language code implementation (optional difficulty)


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;
}