# 贪吃蛇SnakeGame **Repository Path**: YanKeyon/snake_game ## Basic Information - **Project Name**: 贪吃蛇SnakeGame - **Description**: 使用C++语言设计,基于graphics图形库实现的贪吃蛇游戏 - **Primary Language**: C++ - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2019-12-08 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 贪吃蛇SnakeGame ## 介绍 使用C++语言设计,基于graphics图形库实现可视化的贪吃蛇游戏 ## 设计分析 ### 绘制开始界面,选择难度 - 设置程序标题,SnakeGame贪吃蛇 - 输出 选择难度:1.简单 2.中等 3.困难 ### 绘制地图 - 使用graphics包进行绘制 - 绘制一个矩形作为地图的边缘 ![](https://keyon-photo-1256901694.cos.ap-beijing.myqcloud.com//markdown20191208170303.png) - 地图之外的右侧,设计一个分数统计器 ![](https://keyon-photo-1256901694.cos.ap-beijing.myqcloud.com//markdown20191208170323.png) ### 绘制贪吃蛇 - 贪吃蛇由多个半径相同的圆形串联而成,蛇头用红色填充以区分蛇身 - 实现队列的基本操作,使用队列存储贪吃蛇每个部位的坐标 - 选择一个初始位置和初始方向,绘制贪吃蛇初始位置 - 根据贪吃蛇当前的移动方向,向队列中插入新的蛇头位置,并删除队头元素即蛇尾坐标。 - 编写一个键盘触发事件,将WASD作为移动的方向键。当键入WASD时,改变蛇的移动方向;当无键盘触发事件时,不改变蛇的移动方向,继续朝当前方向移动。 - 每次位置变换都重新绘制一遍画布,通过循环和Sleep函数延迟实现动画。 ### 绘制食物 - 随机生成食物坐标,且该坐标满足条件:不是蛇上的坐标 - 绘制食物,根据传入的食物坐标,在当前画布上绘制一个黄色填充的圆,半径与蛇部位一致 - 判断蛇头坐标是否与食物坐标一致。如一致,蛇长度+1,随机生成新的食物坐标并重新绘制;如不一致,蛇长度不变,食物坐标不变并重新绘制。 ### 绘制游戏结束界面 - 输出GAME OVER - 输出最终得分