找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2514|回复: 1
收起左侧

自己写的C语言贪吃蛇游戏源码分享

[复制链接]
ID:283869 发表于 2018-2-12 17:31 | 显示全部楼层 |阅读模式
贪食蛇的运行效果图:
360截图1631040475101110.png

c语言源码:
  1. #include<stdio.h>
  2. #include<stdlib.h>

  3. #define U 'w'
  4. #define D 's'
  5. #define R 'd'
  6. #define L 'a'
  7. #define long 4
  8. #define U_Link 1
  9. #define D_Link 20
  10. #define L_Link 1
  11. #define R_Link 60
  12. #define max 20

  13. struct S{
  14.                 char x,y,cur;
  15.         }h[max],target[11]={{4,4,1},{25,15,1},{5,6,1},{38,16,1},{51,4,1},{25,13,1},{5,18,1},{55,12,1},{15,3,1},{40,15,1},{30,10,1}};

  16. void delay();
  17. void close();
  18. void start();
  19. void pro(int i);


  20. void main()
  21. {
  22.         
  23.         int time;
  24.         char head_l,head_c,i,j,length;
  25.         char key,ch=0,t;
  26. loop:{
  27.         printf("\t\t\t/***********贪吃蛇**********/\n") ;
  28.         printf("\n\n\t   操作技巧:\n\t\t\tW 键: 向上") ;
  29.         printf("\n\n\t\t\tS 键: 向下") ;
  30.         printf("\n\n\t\t\tA 键: 向左") ;
  31.         printf("\n\n\t\t\tD 键: 向右") ;
  32.         printf("\n\n\n\t\t按回车键进入.............") ;
  33.         getchar();
  34.         for(i=0;i<max-1;i++)
  35.         {
  36.                 h[i].cur=i+1;
  37.         }
  38.         h[i].cur=0;
  39.         
  40.         char s[30][60]={0};
  41.         head_l=(U_Link+D_Link)/2;
  42.         head_c=(R_Link+L_Link)/2;

  43.         for(i=0;i<long-1;i++)
  44.         {
  45.                 h[i].cur=i+1;
  46.         }
  47.         h[i].cur=0;
  48.         
  49.         length=long;
  50.         time=1500;
  51.         key=L;
  52.         t=0;
  53.         for(j=0;j<length;j++)
  54.         {
  55.                 h[j].y=head_l;
  56.                 h[j].x=head_c+j;
  57.         }
  58.         while(1)
  59.         {
  60.                 for(j=0;j<length;j++)
  61.                 {
  62.                         s[h[j].y][h[j].x]=1;
  63.                 }
  64.                 s[target[t].y][target[t].x]=2;
  65.                 for(i=0;i<=U_Link;i++)        
  66.                         printf("================================================================================\n");
  67.         
  68.                 for(i=0;i<D_Link-U_Link;i++)
  69.                 {
  70.                         for(j=0;j<L_Link;j++)
  71.                                 printf(" ");
  72.                         printf(" ||");
  73.                         for(j=0;j<R_Link;j++)
  74.                         {
  75.                                 if(s[i][j]==1)
  76.                                         printf("0");
  77.                                 else if(s[i][j]==2)
  78.                                         printf("*");
  79.                                 else printf(" ");
  80.                         }
  81.                         
  82.                         printf("|| \n");
  83.                 }
  84.                 if((h[0].x==target[t].x)&&(h[0].y==target[t].y))
  85.                 {
  86.                         t++;
  87.                         length++;
  88.                         time-=80;
  89.                         if(t>9)break;
  90.                 }
  91.                 s[h[length-1].y][h[length-1].x]=0;
  92.                 for(i=length-1;i>0;i--)
  93.                 {
  94.                         h[i].x=h[i-1].x;
  95.                         h[i].y=h[i-1].y;
  96.                 }
  97.                
  98.                 if(_kbhit())
  99.                 {
  100.                         ch=getch();
  101.                         if((ch==U)||(ch==D)||(ch==R)||(ch==L))
  102.                                 key=ch;
  103.                 }
  104.                 if(key==U)
  105.                 {
  106.                         if(head_l>=0)
  107.                                 head_l--;
  108.                         else head_l=D_Link;        
  109.                 }
  110.                 if(key==D)
  111.                 {
  112.                         if(head_l<D_Link)
  113.                                 head_l++;
  114.                         else head_l=U_Link;
  115.                 }
  116.                 if(key==L)
  117.                 {
  118.                         if(head_c>=0)
  119.                                 head_c--;
  120.                         else head_c=R_Link+1;        
  121.                 }
  122.                 if(key==R)
  123.                 {
  124.                         if(head_c<R_Link)
  125.                                 head_c++;
  126.                         else head_c=L_Link;        
  127.                 }
  128.                 h[0].x=head_c;
  129.                 h[0].y=head_l;
  130.                 printf("\n\t得分: %d",t*10);
  131.         //        printf("h[0].x=%d   h[0].y=%d  target[%d].x=%d y=%d\n",h[0].x,h[0].y,t,target[t].x,target[t].y);
  132.                 delay(time);
  133.                 close();
  134.                
  135.         }
  136.         close();
  137.         printf("恭喜通关\n");
  138.         printf("\n\t得分: %d\n",t*10);
  139.         printf("按空格键退出\n");

  140.         
  141.                 if(' '==getch())
  142.                 goto loop;
  143.         
  144. }
  145. }
  146. void delay(int i)
  147. {
  148.         int a,b=i;
  149.         for(a=0;a<50000;a++,i=b)
  150.         while(i--);
  151. }
  152. void close()
  153. {
  154.         system("cls");
  155. }

复制代码


回复

使用道具 举报

ID:283869 发表于 2018-2-12 17:32 | 显示全部楼层
只用了一天写的,还有一些bug,不喜勿喷
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表