今天老师布置了作业 让我们观察c++实现贪食蛇的代码

#include<windows.h>
#include<time.h>
#include<stdlib.h>
#include<conio.h>
#define N 21
#include<iostream>
using namespace std;
void gotoxy(int x,int y)//位置函数
{
COORD pos;
pos.X=*x;
pos.Y=y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);
}
void color(int a)//颜色函数
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),a);
}
void init(int apple[])//初始化函数(初始化围墙、显示信息、苹果)
{
int i,j;//初始化围墙
int wall[N+][N+]={{}};
for(i=;i<=N;i++)
{
for(j=;j<=N;j++)
wall[i][j]=;
}
color();
for(i=;i<N+;i++)
{
for(j=;j<N+;j++)
{
if(wall[i][j])
cout<<"■";
else cout<<"□" ;
}
cout<<endl;
}
gotoxy(N+,);//显示信息
color();
cout<<"按 W S A D 移动方向"<<endl;
gotoxy(N+,);
color();
cout<<"按任意键暂停"<<endl;
gotoxy(N+,);
color();
cout<<"得分:"<<endl;
apple[]=rand()%N+;//苹果
apple[]=rand()%N+;
gotoxy(apple[],apple[]);
color();
cout<<"●"<<endl;
}
int main()
{
int i,j;
int** snake=NULL;
int apple[];
int score=;
int tail[];
int len=;
char ch='p';
srand((unsigned)time(NULL));
init(apple);
snake=(int**)realloc(snake,sizeof(int*)*len);
for(i=;i<len;i++)
snake[i]=(int*)malloc(sizeof(int)*);
for(i=;i<len;i++)
{
snake[i][]=N/;
snake[i][]=N/+i;
gotoxy(snake[i][],snake[i][]);
color();
cout<<"★"<<endl;
}
while()//进入消息循环
{
tail[]=snake[len-][];
tail[]=snake[len-][];
gotoxy(tail[],tail[]);
color();
cout<<"■"<<endl;
for(i=len-;i>;i--)
{
snake[i][]=snake[i-][];
snake[i][]=snake[i-][];
gotoxy(snake[i][],snake[i][]);
color();
cout<<"★"<<endl;
}
if(kbhit())
{
gotoxy(,N+);
ch=getche();
}
switch(ch)
{
case 'w':snake[][]--;break;
case 's':snake[][]++;break;
case 'a':snake[][]--;break;
case 'd':snake[][]++;break;
default: break;
}
gotoxy(snake[][],snake[][]);
color();
cout<<"★"<<endl;
Sleep(abs(-0.5*score));
if(snake[][]==apple[]&&snake[][]==apple[])//吃掉苹果后蛇分数加1,蛇长加1
{
score++;
len++;
snake=(int**)realloc(snake,sizeof(int*)*len);
snake[len-]=(int*)malloc(sizeof(int)*);
apple[]=rand()%N+;
apple[]=rand()%N+;
gotoxy(apple[],apple[]);
color();
cout<<"●"<<endl;
gotoxy(N+,);
color();
cout<<score<<endl;
}
if(snake[][]==||snake[][]==N||snake[][]==||snake[][]==N)//撞到围墙后失败
{
gotoxy(N/,N/);
color();
cout<<"失败!!!"<<endl;
for(i=;i<len;i++)
free(snake[i]);
Sleep(INFINITE);
exit();
}
}
return ;
}

代码运行截图:

最新文章

  1. YY前端课程-自习
  2. 学习Google Protocol buffer之语法
  3. Entity Framework若干个扩展
  4. C# Enum Type
  5. 数据库范式(1NF 2NF 3NF BCNF)详解一
  6. Hbase rest方式获取指定key范围内的值
  7. hdu 4010 Query on The Trees LCT
  8. hdu 3093 动态规划
  9. google其他入口地址
  10. VS2008中MFC界面编程Caption中文全是乱码的解决办法 -转载
  11. JS中的prototype属性
  12. 2017了,回家前 &quot;年末&quot; 分享:下雨,飘雪,红包雨,碰撞球,自定义View
  13. excel支持正则表达式提取字符函数(支持RegExp捕获分组)
  14. POJ3040--Allowance(贪心)
  15. Disconf源码分析之启动过程分析上(1)
  16. SQL Server中通用数据库角色权限处理
  17. 切换目录查询目录 tcp
  18. Redis随笔-rename效率问题
  19. python使用pip下载模块
  20. Azure Paas SQL 修改用户名密码的相关问题

热门文章

  1. java程序怎么在一个电脑上只启动一次,只开一个进程
  2. SqlBulkCopy 快速插入数据
  3. 1053 Path of Equal Weight (30 分)
  4. [UE4]场景光照改进PostProcessVolume
  5. elastix php session保存地点
  6. 半联结&amp;反联结!
  7. Poi对excel的基本操作
  8. Python之模块(二)
  9. Python——连接操作数据库
  10. WindowBrush