【C】贪吃蛇

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

#include <windows.h>

#include <conio.h>

 

#define H 10

#define L 20

void map();

void map_print();

void up_go();

void down_go();

void left_go();

void right_go();

 

 

 

 

 

int coordinate[50][2];                      //坐标

int count=0;                      //吃到小虫子的个数

int i,j,k,temp1_x,temp1_y;

int count_test=0;

char anniu;

char ditu[H][L];

int time_x,time_y;

int main()

{

         srand(time(NULL));

         time_x=rand()%11;

         time_y=(rand()*2/5+6)%21;

         ditu[time_x][time_y]='o';

         map();

         //让地图中间有个东西

         ditu[H/2][L/2]='*';

         map_print();

         //设置主角的坐标

         temp1_x=H/2;

         temp1_y=L/2;

         //先判定按钮,然后判断按钮是什么,

         anniu='w';

         coordinate[0][0]=temp1_x;

         coordinate[0][1]=temp1_y;

         for(i=0;;i++)

         {

         system("cls");

         map_print();

        

        

//     count_test=count;

         switch(anniu)

         {

                  case 'w':

                                   up_go();

                          break;

                  case 's':

                                   down_go();

                          break;

                  case 'a':

                                   left_go();

                          break;

                  case 'd':

                                   right_go();

                          break;

         }

         }

 

}

 

 

 

 

void map()                                 //给地图画空格号

{

         for(i=0;j<H;j++)

         {

                  for(k=0;k<L;k++)

                  {

                          ditu[j][k]=' ';

                  }

                  printf("\n");

         }

}

void map_print()              //先描绘一下地图 

{

         for(j=0;j<H;j++)

         {

                  for(k=0;k<L;k++)

                  {

                          printf("%c",ditu[j][k]);

                  }

                  printf("\n");

         }

}

 

 

 

 

 

 

 

 

//******************************************************************************上下左右移动代码************************************************************************************

void up_go()

{

         //********************************

         while(1)

         {

         for(i=0;i<20;i++)

         {

                  Sleep(20);

                  if(kbhit())

                  {

                          anniu=getch();

                          break;

                  }

         }

         if(anniu!='w')

         break;

         //*********************************

                 

 

                          //先把尾巴去掉,然后判断吃了虫子没,吃了就张一根之后循环把每一个前面的值都附在后面的点上,然后脑袋往前走,然后给脑袋加个形状,

         //     ditu[coordinate[count][0]][coordinate[count][1]]=' ';

                 

                  if(ditu[coordinate[0][0]][coordinate[0][1]]=='o')

                  {

                          count++;

                  }

                  ditu[coordinate[count][0]][coordinate[count][1]]=' ';

                  for(i=count;i>0;i--)

                  {

                          coordinate[i][0]=coordinate[i-1][0];                               //每一点的坐标

                          coordinate[i][1]=coordinate[i-1][1];                              

                  }

                 

                  coordinate[0][0]-=1;

                  ditu[coordinate[0][0]][coordinate[0][1]]='*';

 

                  if(count>count_test)

                  {

                  //     ditu[time_x][time_y]='*';

                          ditu[coordinate[count][0]][coordinate[count][1]]='-';

                          srand(time(NULL));

                          time_x=rand()%11;

                          time_y=(rand()*2/5+6)%21;

                          ditu[time_x][time_y]='o';

                          count_test=count;

                  }

        

                 

                 

 

                 

//**************************************************************

 

 

        

        

        

        

        

         ditu[time_x][time_y]='o';                                          //这是最神奇的BUG!!!!

         system("cls");

         map_print();

                 

         }      

}

 

 

void down_go()

{

while(1)

         {

         for(i=0;i<20;i++)

         {

                  Sleep(20);

                  if(kbhit())

                          {

                                   anniu=getch();

                                   break;

                          }      

         }

         if(anniu!='s')

         break;

        

 

//*********************************************************************************

                  //先把尾巴去掉,然后判断吃了虫子没,吃了就张一根之后循环把每一个前面的值都附在后面的点上,然后脑袋往前走,然后给脑袋加个形状,

         //     ditu[coordinate[count][0]][coordinate[count][1]]=' ';

                  if(ditu[coordinate[0][0]][coordinate[0][1]]=='o')

                  {

                          count++;

                         

                  }

                  ditu[coordinate[count][0]][coordinate[count][1]]=' ';

                  for(i=count;i>0;i--)

                  {

                          coordinate[i][0]=coordinate[i-1][0];                               //每一点的坐标

                          coordinate[i][1]=coordinate[i-1][1];                              

                  }

                 

                  coordinate[0][0]+=1;

                  ditu[coordinate[0][0]][coordinate[0][1]]='*';

                  if(count>count_test)

                  {

                  //     ditu[time_x][time_y]='*';

                          ditu[coordinate[count][0]][coordinate[count][1]]='-';                                                                    

                          srand(time(NULL));

                          time_x=rand()%11;

                          time_y=(rand()*2/5+6)%21;

                          ditu[time_x][time_y]='o';

                          count_test=count;

                         

                         

                         

                  }

        

                 

                 

                 

        

//*********************************************************************************

        

        

         ditu[time_x][time_y]='o';

         system("cls");

         map_print();

                 

         }      

}

 

 

void left_go()

{

         while(1)

         {

         for(i=0;i<20;i++)

         {

                  Sleep(20);

                  if(kbhit())

                          {

                                   anniu=getch();

                                   break;

                          }      

         }

         if(anniu!='a')

         break;     

        

 

//******************************************************************************

         //先把尾巴去掉,然后判断吃了虫子没,吃了就张一根之后循环把每一个前面的值都附在后面的点上,然后脑袋往前走,然后给脑袋加个形状,

         //     ditu[coordinate[count][0]][coordinate[count][1]]=' ';

        

        

                  if(ditu[coordinate[0][0]][coordinate[0][1]]=='o')

                  {

                          count++;

                 

                         

                  }

                  ditu[coordinate[count][0]][coordinate[count][1]]=' ';

                  for(i=count;i>0;i--)

                  {

                          coordinate[i][0]=coordinate[i-1][0];                               //每一点的坐标

                          coordinate[i][1]=coordinate[i-1][1];                              

                  }

                 

                  coordinate[0][1]-=1;

                  ditu[coordinate[0][0]][coordinate[0][1]]='*';

                 

                  if(count>count_test)

                  {//    ditu[time_x][time_y]='*';

                          ditu[coordinate[count][0]][coordinate[count][1]]='-';

                          srand(time(NULL));

                          time_x=rand()%11;

                          time_y=(rand()*2/5+6)%21;

                          ditu[time_x][time_y]='o';

                          count_test=count;

                  }

                 

                 

                 

        

//******************************************************************************

        

         ditu[time_x][time_y]='o';

 

         system("cls");

         map_print();

         }      

}

 

 

void right_go()

{

         while(1)

         {

         for(i=0;i<20;i++)

         {

                  Sleep(20);

                  if(kbhit())

                          {

                                   anniu=getch();

                                   break;

                          }      

         }

         if(anniu!='d')

         break;

        

 

//******************************************************************************

        

//ditu[coordinate[count][0]][coordinate[count][1]]=' ';

if(ditu[coordinate[0][0]][coordinate[0][1]]=='o')

                  {

                          count++;

                  }

                  ditu[coordinate[count][0]][coordinate[count][1]]=' ';

                  for(i=count;i>0;i--)

                  {

                          coordinate[i][0]=coordinate[i-1][0];                               //每一点的坐标

                          coordinate[i][1]=coordinate[i-1][1];                              

                  }

                 

                  coordinate[0][1]+=1;

                  ditu[coordinate[0][0]][coordinate[0][1]]='*';

                 

                  if(count>count_test)

                  {      

         //              ditu[time_x][time_y]='*';

                          ditu[coordinate[count][0]][coordinate[count][1]]='-';

                          srand(time(NULL));

                          time_x=rand()%11;

                          time_y=(rand()*2/5+6)%21;

                          ditu[time_x][time_y]='o';

                          count_test=count;

                  }

                 

                 

                 

                 

        

        

//******************************************************************************

 

 

         ditu[time_x][time_y]='o';

         system("cls");

         map_print();

         }      

}

//******************************************************************************上下左右移动代码************************************************************************************

 

转载于:https://www.cnblogs.com/naraka/p/7890040.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值