变量类型定义 1.首先定义数据类型,其中有蛇,地图,墙,食物
*蛇:长度
地图:长宽5050,
*墙:分在地图上下左右边界
*食物:随机生成,范围限定在地图之间,注意避免与墙壁接触,目的减少游戏难度
2.其次再定义其他东西
*相对方向用一个二维数组表示
*初速度设为100
*相对位置初始化为0
*i与j用于表示蛇的横纵坐标
*a,b用于定位食物
函数类型声明
1.隐藏光标函数,防止光标在界面里头闪动
2.随机生成食物函数
b = rand() % 46;
food[0] = a + 2;//地图靠边处比较难吃到,所以把食物限制到2-47之间
food[1] = b + 2;
3.生成蛇的函数
最开始让用户自己输入蛇初始化的长度,接着用循环遍历数组来初始化蛇的位置
int ty = snake[0][1] - snake[1][1];
这两行是指定义相对位置。
接着定义方向,用循环的方法判断方向是否为四个相对位置之一,如果是的话就将其中一个方向赋值给DIR变量
4.输出地图,蛇,食物的函数
首先对map数组遍历,接着用bool函数判断,判断这一数组元素是否与蛇的数组元素相重合,如果相重合则输出蛇 同理,如果这一数组元素与食物的元素相重合,则输出蛇
5.输出墙
对于四个边框中的元素分别用方块表示
6.分析游戏失败的结果
同样使用bool函数判断:如果蛇碰到自己的身子或者撞墙则失败
7.分析蛇吃到食物的情景
蛇吃到食物则算成功
8.定义方向
这里使用_kbhit函数,如果没有按键,则只需要蛇保持原有的运动状态
如果有按键,则将蛇头赋给下一节,相当于除了蛇头之外的全部向前挪一位
最后再定义蛇头元素
如果这个时候碰墙或者碰到身子,则输出gameover
如果吃到食物,则蛇身加1,蛇速变快
COORD point = { 0,0 };
HANDLE HOutput = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(HOutput, point);
outputsnake();//用句柄将光标定位在(0,0),然后重新输出地图
Sleep(v);//蛇的速度在不断的增大
最后再添加以上程序,调整页面
主函数