# 基于Qt实现的贪吃蛇小游戏 **Repository Path**: liu-yuc/Snake ## Basic Information - **Project Name**: 基于Qt实现的贪吃蛇小游戏 - **Description**: 基于Qt实现贪吃蛇小游戏 - **Primary Language**: C++ - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 1 - **Created**: 2021-05-09 - **Last Updated**: 2024-03-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 基于Qt实现的贪吃蛇小游戏 #### 介绍 基于Qt实现贪吃蛇小游戏 #### 软件架构 (1)游戏背景:外层是游戏窗口,贪吃蛇游戏最外层是墙体。 (2)蛇的初始化: 最初蛇是一个方格,并且要设定这个方格出现的位置。要注意只在游戏开始的时候初始化蛇,因此引入布尔类型的blsRun变量用于标记。 (3)蛇头的移动: 蛇有以下两种移动方式:a)是固定时间间隔下的向前被动移动,b)是玩家通过键盘让其改变方向的主动移动 (a)每经过固定的一段时间,贪吃蛇会进行一次瞬间的坐标更新,而在两次时间更新之间,蛇是没有移动的。这一部分用计时器来实现,而坐标更新的函数为槽函数。 (b)玩家通过键盘可以让贪吃蛇改变方向。 (4)蛇身的移动: 第n节(n大于等于2)在此时刻的位置为第n-1节在上一个时刻所处的位置,用for循环实现。 (5)蛇吃食物以及蛇身长度的增长 食物的产生在空间上是随机的,在时间上是游戏开始的时候产生一个以及蛇吃掉食物的时候产生下一个新的食物。蛇吃食物的判定即是蛇头和食物重合,此时需要将蛇身增长一个单位。 (6)游戏结束的条件:设计是否结束这一bool类型变量进行控制。游戏结束有两种情况:(a)蛇头撞墙,(b)蛇头撞到蛇身上。 (a)蛇头撞墙:通过判断移动的时候蛇头坐标和墙的坐标是否重合来判断是否撞墙。 (b)蛇头撞到蛇身:蛇头坐标和蛇身任何一个地方的坐标重合,即可判定蛇头撞到蛇身。 (7)UI设计: 如游戏开始和结束的时候在游戏界面显示提示语,计算分数,美化等。 (8)其他游戏性设计: 实现速度增加:吃到食物后让蛇的移动速度增加。 #### 安装教程 1. 解压缩。 2. 打开解压缩后的文件夹,打开扩展名为.pro的文件。 3. 按Ctrl+B编译。 4. 编译完成后,按F5调试运行或按Ctrl+R直接运行。 #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)