贪吃蛇设计流程:
(1)数据设计
- 辅助宏定义
游戏地图的宽和高,以及蛇的最大长度
- 食物结构体
食物在地图上x和y上的显示
- 蛇结构体
蛇的长度,蛇得每一节的坐标存储,蛇的移动速度
- 辅助全局变量
蛇是否变化,蛇的初始移动方向
(2)模块化设计
- 地图设计
void drawMap();//绘制游戏地图
- 按键处理
void keyDown();//按键处理
- 食物设计
voidcreateFood();//产生食物
- 辅助函数
void gotoxy(int x,int y);//cmd移动辅助函数
- 终止游戏
int snakeStaus();//蛇状态
(3)具体实现
1.辅助函数:void gotoxy(int x,int y);//cmd移动辅助函数
//
// cmd移动辅助函数
void gotoxy(int x, int y)
{
//获取cmd窗口句柄
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
//光标坐标
COORD coord;
//设置窗口坐标
coord.X = x;
coord.Y = y;
SetConsoleCursorPosition(handle, coord);
}
2.地图设计: void drawMap();//绘制游戏地图
// 绘制游戏地图
void drawMap()
{
srand((unsigned int)time(NULL));
//食物
//1.食物属性
food.x = rand() % (MAPWIDTH - 4/*食物图标占用2个字符*/) + 2;
food.y = rand() % (MAPHEIGHT - 2) + 1;
//2.画食物
gotoxy(food.x, food.y);
printf("⊙");
//蛇
//1.蛇属性
mysnake.x[0] = MAPWIDTH / 2; //定位在中间
mysnake.y[0] = MAPHEIGHT / 2;
//2.画蛇
gotoxy(mysnake.x[0], mysnake.y[0]);
printf("■");
mysnake.le