# SnakeGame **Repository Path**: lostblackknight/SnakeGame ## Basic Information - **Project Name**: SnakeGame - **Description**: 贪吃蛇游戏 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-11-08 - **Last Updated**: 2021-07-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # GluttonousSnake ***作者***:*[lostblackknight](https://github.com/lostblackknight),[tyroguo](https://github.com/tyroguo),[zuo-ri](https://github.com/zuo-ri),[guojiaqiang201314](https://github.com/guojiaqiang201314)* *转载请标明作者和出处* --- ## 引言 - 编写目的:方便开发小组进行阅读与参考,合理分配任务,安排时间。 - 预期读者:项目小组人员。 - 参考资料:Google,CSDN,GitHub等。 ## 项目概述 - **项目开发背景:** 贪吃蛇游戏是一个经典的游戏,它因操作简单、娱乐性强而广受欢迎。 - **意义:** 提高团队开发的合作能力,对所学的知识进行巩固,体验开发软件的过程。 - **应用现状:** 操作简单、娱乐性强而广受欢迎。 - **目标:** 实现两种模式游戏模式:经典模式、冒险模式。 - **范围:** 不同年龄段的人。 - **作用:** 丰富人们的日常生活,给人们带来快乐。 ## 游戏策划 - **游戏基本描述** 1. **游戏名称:** GluttonousSnake 2. **游戏主题:** 益智、休闲 3. **游戏类型:** 单机游戏 4. **游戏风格:** 像素风格 5. **游戏运行环境:** Windows客户端 - **游戏世界设定** 1. **游戏背景故事:** 在遥远的未来世界,人类科技发达,人类逐渐体会到了科技带来的便捷,一些心怀不轨的人类想要利用科技控制地球。为了对抗他们,科学家研究了蛇,在无穷尽的对抗中,蛇的能量逐渐耗尽,体态逐渐残缺。为了补充能源,恢复体态,人类需要控制蛇不断进食增强蛇的体态,来对抗邪恶。 2. **游戏角色定义:** 蛇、食物、墙 3. **游戏过程描述:** 玩家使用W、A、S、D键操控一条蛇不断地吃食物,蛇身随着吃掉的食物数量不断变长,当蛇头撞到蛇身或墙时游戏结束,达到一定分数后游戏胜利。 4. **游戏控制描述:** 通过W、A、S、D方向键控制蛇的移动方向,通过U、I控制蛇的加速减速。 5. **游戏关卡设定:** 关卡越高,障碍物越多,难度越大。 - **游戏素材描述** 1. **游戏界面:** - 加载界面 - 登录界面 - 注册界面 - 找回密码界面 - 主菜单界面 - 游戏界面 2. **游戏动画:** - 加载界面的动画 - 蛇移动的动画 - 菜单弹出的动画 3. **游戏音效:** - 主菜单界面的音乐 - 单击的音乐 - 游戏界面的音乐 - 蛇吃食物的音乐 - 蛇死亡的音乐 - 游戏结束的音乐 - 游戏胜利的音乐 ## 技术选择 > java,JavaFX,java poi ## 游戏展示 ![找不到了](https://github.com/lostblackknight/Image/blob/master/01.png) ![找不到了](https://github.com/lostblackknight/Image/blob/master/02.png) ![找不到了](https://github.com/lostblackknight/Image/blob/master/03.png) ![找不到了](https://github.com/lostblackknight/Image/blob/master/04.png) ![找不到了](https://github.com/lostblackknight/Image/blob/master/05.png) ![找不到了](https://github.com/lostblackknight/Image/blob/master/06.png) ![找不到了](https://github.com/lostblackknight/Image/blob/master/07.png) ![找不到了](https://github.com/lostblackknight/Image/blob/master/08.png) ![找不到了](https://github.com/lostblackknight/Image/blob/master/09.png) ![找不到了](https://github.com/lostblackknight/Image/blob/master/10.png) ![找不到了](https://github.com/lostblackknight/Image/blob/master/11.png) ## 数据源设计 1. 用户表**User** | uid | username | password | mobilephone | | :--: | :------: | :------: | :---------: | | int | String | String | String | 2. 游戏表**Game** | uid | type | sid | fid | wid | | :--: | :--: | :--: | :--: | :--: | | int | int | int | int | int | 3. 蛇表**Snake** | sid | headX | headY | dir | | :--: | :---: | :---: | :--: | | int | int | int | int | 4. 身体表**SnakeBody** | sid | bodyX | bodyY | | :--: | :---: | :---: | | int | int | int | 5. 食物表**Food** | fid | foodX | foodY | | :--: | :---: | :---: | | int | int | int | 6. 墙表**Wall** | wid | wallX | wallY | | :--: | :---: | :---: | | int | int | int | ## 用例描述 - #### 加载游戏资源 - **用例名称** 加载游戏资源 - **场景** Who:游戏应用 Where:加载界面 When:打开游戏应用,进入加载页面 - **用例描述** > 1. 玩家打开游戏应用,进入加载界面 > > 2. 在加载界面播放加载动画,后台加载游戏的地图资源 > 3. 动画播放完后,进入登录界面 - **用例价值** 加载资源,提高游戏运行效率 --- - #### 玩家登录 - **用例名称** 玩家登录 - **场景** Who:玩家 Where:登陆界面 When:加载界面加载完,进入登陆界面 - **用例描述** > 1. 玩家输入账号和密码,点击登录按钮 > > 2. 应用通过玩家输入的账号和密码,到数据源中进行验证 > > > 1. 验证不成功,显示用户名或密码错误的提示信息 > > > > > 1. 用户选择注册账号,进行注册,输入注册的账号再次验证 > > > 2. 用户选择忘记密码,找回账号,输入找回的账号再次验证 > > > > 2. 验证成功 > > 3. 如果验证成功,加载主菜单界面的音频,进入主菜单界面 - **用例价值** 玩家登录后,进入游戏的主菜单,对游戏进行基本的设置,获取相关的帮助,开始游戏 --- - #### 玩家注册 - **用例名称** 玩家注册 - **场景** Who:玩家 Where:注册界面 When:在登陆界面点击注册账号,进入注册界面 - **用例描述** > 1. 玩家按照提示的要求输入用户名、密码、手机号的正确的格式 > > > 1. 格式不正确,提示用户名格式不正确、密码格式不正确、手机号格式不正确的信息 > > 2. 格式正确 > > 2. 如果格式正确,点击注册按钮进行注册 > > > 1. 注册失败,提示用户名已存在的信息 > > 2. 注册成功 > > 3. 如果注册成功,点击返回回到登录界面,并将注册的信息回写到登录界面上 - **用例价值** 注册游戏账号,有了账号后才能登录进入游戏 --- - #### 玩家找回密码 - **用例名称** 找回密码 - **场景** Who:玩家 Where:找回密码界面 When:在登陆界面点击忘记密码,进入找回密码界面 - **用例描述** > 1. 玩家输入注册时所用的手机号,点击找回按钮找回 > > > 1. 找回失败,提示找回密码失败的信息 > > 2. 找回成功,提示找回密码成功的信息,并在显示密码的显示框中显示密码 > > 2. 如果找回成功,点击返回回到登录界面,并将找回的信息回写到登录界面上 - **用例价值** 找回游戏账号,有了账号后才能登录进入游戏 --- - #### 玩家查看游戏玩法和按键绑定以及对游戏进行设置 - **用例名称** 玩家查看游戏玩法和按键绑定以及对游戏进行设置 - **场景** Who:玩家 Where:主菜单的选项界面 When:进入主菜单界面,点击选项后进入选项界面 - **用例描述** > 1. 玩家点击游戏玩法,可以查看游戏背景,还可以对游戏的音频进行设置 > 2. 玩家点击按键绑定,可以查看游戏的按键绑定 > 3. 点击返回回到主菜单 - **用例价值** 了解游戏玩法,对游戏进行设置 --- - #### 玩家选择休闲模式/冒险模式的新游戏,进入游戏 - **用例名称** 玩家选择休闲模式/冒险模式的新游戏,进入游戏 - **场景** Who:玩家 Where:主菜单的休闲模式/冒险模式的界面 When:进入主菜单界面,点击休闲模式/冒险模式,进入休闲模式/冒险模式的界面 - **用例描述** > 1. 根据用户和游戏类型读取对应的游戏信息 > > > 1. 如果存在旧的数据,将旧的数据清除,重新按默认数据初始化游戏 > > 2. 如果不存在旧的数据,按默认数据初始化游戏 > > 2. 初始化完成后,加载游戏界面的音频,设置游戏状态为开始状态,进入游戏 - **用例价值** 玩家选择游戏模式进入游戏 --- - #### 玩家选择休闲模式/冒险模式的继续,进入游戏 - **用例名称** 玩家选择休闲模式/冒险模式的继续,进入游戏 - **场景** Who:玩家 Where:主菜单的休闲模式/冒险模式的界面 When:进入主菜单界面,点击休闲模式/冒险模式,进入休闲模式/冒险模式的界面 - **用例描述** > 1. 根据用户和游戏类型读取对应的游戏信息 > > > 1. 如果存在旧的数据,用旧数据初始化游戏 > > 2. 如果不存在,按默认数据初始化游戏 > > 2. 初始化完成后,加载游戏界面的音频,设置游戏状态为开始状态,进入游戏 - **用例价值** 玩家选择游戏模式进入游戏 --- - #### 蛇移动 - **用例名称** 蛇移动 - **场景** Who:玩家 Where:游戏界面 When:玩家选择游戏模式进入游戏界面 - **用例描述** > 1. 玩家通过W、A、S、D控制蛇的移动,通过U、I控制蛇的速度 > 2. 如果蛇碰到了墙或自己的身体,蛇死亡,播放蛇死亡的音乐 > 3. 如果蛇死亡了,设置游戏状态为游戏结束,播放游戏结束的音乐 > 4. 如果蛇吃到了食物,播放蛇吃食物的音频,蛇的身体变长,让右上角显示的蛇的长度和当前得分增加 > 5. 如果蛇超过了边界,让蛇回到界面中来 - **用例价值** 蛇在移动过程中遇到的问题 --- - #### 食物的生成 - **用例名称** 食物的生成 - **场景** Who:食物 Where:游戏界面 When:玩家选择游戏模式进入游戏界面 - **用例描述** > 1. 进入游戏,食物在不是墙的位置上随机生成一个食物 > 2. 当食物被吃时,播放蛇吃食物的音频,再在不是墙的位置上随机生成一个食物 - **用例价值** 食物的问题 --- - #### 按下ESC键暂停游戏/继续游戏 - **用例名称** 游戏暂停 - **场景** Who:玩家 Where:游戏界面的菜单界面 When:玩家按下ESC键后进入游戏界面的菜单界面 - **用例描述** > 1. 按下ESC键,设置游戏界面为暂停状态,弹出菜单界面 > 2. 再按下ESC键或点击菜单界面的继续回到游戏界面,继续游戏 - **用例价值** 暂停游戏/继续游戏 --- - #### 游戏结束 - **用例名称** 游戏结束 - **场景** Who:玩家 Where:游戏界面 When:玩家选择游戏模式进入游戏界面 - **用例描述** > 1. 如果游戏状态为游戏结束弹出游戏结束界面,提示玩家按ESC键打开菜单 > 2. 在菜单界面按下主菜单回到主菜单界面 - **用例价值** 游戏结束 --- - #### 游戏胜利 - **用例名称** 游戏胜利 - **场景** Who:玩家 Where:游戏界面 When:玩家选择游戏模式进入游戏界面 - **用例描述** > 1. 如果游戏状态为游戏胜利弹出游戏胜利界面,提示玩家按ESC键打开菜单 > 2. 在菜单界面按下主菜单回到主菜单界面 > 3. 在菜单界面按下继续进入下一关 - **用例价值** 游戏胜利 --- - #### 游戏数据的保存 - **用例名称** 游戏数据的保存 - **场景** Who:玩家 Where:游戏窗口 When:打开游戏应用 - **用例描述** > 1. 正常退出保存游戏数据 > > > 1. 点击游戏界面中的菜单界面中的主菜单进行数据保存 > > 2. 点击游戏界面中的菜单界面中的退出至桌面进行数据保存 > > 2. 异常退出保存游戏数据 > > > 1. 点击窗口右上角的叉号保存游戏数据 - **用例价值** 游戏胜利 --- - #### 应用退出 - **用例名称** 应用退出 - **场景** Who:玩家 Where:游戏窗口 When:打开游戏应用 - **用例描述** > 1. 正常退出 > > > 1. 点击游戏界面中的菜单界面中的退出至桌面 > > 2. 点击主菜单界面中的退出至桌面 > > 2. 异常退出 > > > 1. 点击窗口右上角的叉号退出应用 - **用例价值** 退出游戏应用