同济大学CS《高级程序语言设计2》大作业: 贪吃蛇TongJi University CS C++ assignment: greddy snake
本项目是为2020年同济大学计算机系高级程序语言设计2期末作业。实现了一个功能齐全的贪吃蛇游戏。
- 实现以下3个主题游戏功能
- 入门版: 要求玩家控制方向键来控制小蛇的前进方向,以使蛇吃掉面板上随机位置上的食物(位置随机,数量为1-5随机)。每次成功吃掉食物后小蛇体长将增加一点,得分增加。食物吃光则再次随机产生。当小蛇撞到边界或者蛇头与蛇身相撞时,蛇将挂掉,游戏结束。
- 进阶版:蛇挂掉后,此时蛇尸身改变显示颜色变成边界,再随机产生新的食物和蛇,游戏继续。直到剩余空间不足以生成新的蛇和食物为止。
- 高级版:蛇挂掉后,此时蛇尸身改变显示颜色变成食物,再随机产生新的食物和蛇,游戏继续。直到撞墙次数>5,或剩余空间不足以生成新的蛇和食物为止。
- 游戏应实现历史记录功能,将每次游戏的结果记录在文件中,文件编码的格式可以自行决定,但是要求能成功解析并输出到屏幕。应至少保存如下信息,且程序可以灵活增删改查(改查仅限针对用户名)。
- 游戏应自行实现菜单功能,要求菜单简洁美观,交互友好,功能明确。
- 游戏需要有实时UI,需要实时显示下列信息:
- 蛇的长度
- 蛇剩余的生命数(对于部分模式)
- 当前的分数,不同的果实需要制定不同的加分逻辑,同时死亡或撞墙/穿透也需要不同的扣分逻辑
- 历史最高分,当前游玩版本的历史最高分,如果当前分数超过历史最高那么历史最高则与当前分数同步
- 游戏时间
- 更多的游戏逻辑
- 分软墙壁和硬墙壁,软墙壁的伤害是撞1块软墙要吃2个食物才能补回来,硬墙壁的伤害是减掉蛇长一半
- 地图划分加速区和减速区
- 设置体能槽以及体能计算规则,体能槽归零时游戏结束
- 食物随机出现“精灵果”和“恶果”,精灵果加分/加体能/加命(结合自行规则),恶果吃到直接游戏结束
- 游戏记录保存时可选择同时保存当前地图,以文件形式存放,以便游戏者可选择任意时间继续加载并完成游戏挑战
- 扩大地图边界,地图可以非常大,但是屏幕只显示一小块,屏幕外还有非常大的一块隐藏区域,镜头可以随着蛇移动,也可以到边界切换地图区块
RPG模式,实现一个带剧情线路的游戏逻辑,例如在某些阶段要完成指定收集任务,解密任务才能通往下一关
- 实现人机对战,AI使用A*算法
- 实现双人对战
- 实现多人联机对战,目前服务器已关闭,该功能无法使用
开始页面
单人游戏
双人游戏
四人联机
创建房间
- 最肝的一个大作业,工作量令人发指,如果不是疫情线上教学,根本没时间做到这种程度
- 其实可玩性还蛮强的hhh的😂,就是游戏画面挺粗糙的
- 这个我感觉值个star吧?