设为首页 加入收藏

TOP

C++贪吃蛇效果实现代码(一)
2017-12-18 12:36:38 】 浏览:458
Tags:效果 实现 代码

效果极好…

#include
  
     
#include
   
    //该函数主要可以提供一些函数与符号常量 #include
    
     //提供大量基于迭代器的非成员模版函数 #include
     
      //其中定义了通过控制台进行数据输入和数据输出的函数 #include
      
       //日期和时间头文件 #include
       
         #define ML 100 using namespace std; class Snake //声明一个类Snake { public: int head,tail,body[200],length; }; Snake T; //定义一个对象T int map[100][100]; //定义一个整形的二维数组做标记用 char maze[100][100]; //根据map数组的不同数值显示不同符号,以此绘图 void init() //初始化函数 { T.head=3; T.tail=0; // T.length=0; memset(T.body,0,sizeof(T.body)); } int card[800]; char order; //接收指令 int getnum() { static int n=0; n++; n=n%800; return card[n]; } void up() { int sum,i; sum=T.body[(T.head-1+ML)%ML]-100; if(map[sum/100][sum%100]==1) { T.length++; T.body[T.head++]=sum; T.head%=ML; map[sum/100][sum%100]=0; for(i=T.tail;i!=T.head;) { sum=T.body[i]; map[sum/100][sum%100]=-1; i++; i%=ML; } while(1) { sum=getnum(); if(map[sum/100][sum%100]==0) { map[sum/100][sum%100]=1; break; } } for(i=T.tail;i!=T.head;) { sum=T.body[i]; map[sum/100][sum%100]=0; i++; i%=ML; } } else { T.body[T.head++]=sum; T.head%=ML; T.tail=(++T.tail)%ML; } } void down() { int sum,i; sum=T.body[(T.head-1+ML)%ML]+100; if(map[sum/100][sum%100]==1) { T.length++; T.body[T.head++]=sum; T.head%=ML; map[sum/100][sum%100]=0; for(i=T.tail;i!=T.head;) { sum=T.body[i]; map[sum/100][sum%100]=-1; i++; i%=ML; } while(1) { sum=getnum(); if(map[sum/100][sum%100]==0) { map[sum/100][sum%100]=1; break; } } for(i=T.tail;i!=T.head;) { sum=T.body[i]; map[sum/100][sum%100]=0; i++; i%=ML; } } else { T.body[T.head++]=sum; T.head%=ML; T.tail=(++T.tail)%ML; } } void right() { int sum,i; sum=T.body[(T.head-1+ML)%ML]+1; if(map[sum/100][sum%100]==1) { T.length++; T.body[T.head++]=sum; T.head%=ML; map[sum/100][sum%100]=0; for(i=T.tail;i!=T.head;) { sum=T.body[i]; map[sum/100][sum%100]=-1; i++; i%=ML; } while(1) { sum=getnum(); if(map[sum/100][sum%100]==0) { map[sum/100][sum%100]=1; break; } } for(i=T.tail;i!=T.head;) { sum=T.body[i]; map[sum/100][sum%100]=0; i++; i%=ML; } } else { T.body[T.head++]=sum; T.head%=ML; T.tail=(++T.tail)%ML; } } void left() { int sum,i; sum=T.body[(T.head-1+ML)%ML]-1; if(map[sum/100][sum%100]==1) { T.length++; T.body[T.head++]=sum; T.head%=ML; map[sum/100][sum%100]=0; for(i=T.tail;i!=T.head;) { sum=T.body[i]; map[sum/100][sum%100]=-1; i++; i%=ML; } while(1) { sum=getnum(); if(map[sum/100][sum%100]==0) { map[sum/100][sum%100]=1; break; } } for(i=T.tail;i!=T.head;) { sum=T.body[i]; map[sum/100][sum%100]=0; i++; i%=ML; } } else { T.body[T.head++]=sum; T.head%=ML; T.tail=(++T.tail)%ML; } } int main() { memset(map,0,sizeof(map)); memset(maze,' ',sizeof(maze)); int i,j,sum=0,k=0,temp; for(i=1;i<20;i++) for(j=1;j<40;j++) { card[k++]=i*100+j; } srand(time(0)); temp=rand()%10+1; while(temp--) random_shuffle(card,card+19*39); for(i=0;i<=40;i++) map[i][0]=map[20][i]=map[i][40]=map[0][i]=-1; init(); T.length=1; T.body[T.head++]=101; T.head%=ML; sum=getnum(); map[sum/100][sum%100]=1; char jud='d'; int TM=300,start; while(1) { (TM>100)?(TM=300-T.length*60):(TM=50); start=clock(); //利用临时无穷循环制作刷屏时间 while(clock()-start<=TM && !kbhit()) //kbhit() 检查当前是否有键盘输入,若有则返回一个非0值,否则返回0 { ; } if(kbhit()&&(order=getch(),order=='w'||order=='s'||order=='a'||order=='d')) { sum=T.body[(T.head-1+ML)%ML]; system("CLS"); for(i=T.tail;i!=T.head;) { temp=T.bod
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇c++实现插入排序(代码教程) 下一篇C++鼠标乱飞情况代码实现

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目