lingbai-kong / greedy-snake

同济大学CS《高级程序语言设计2》大作业: 贪吃蛇TongJi University CS C++ assignment: greddy snake

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

greedy-snake

同济大学CS《高级程序语言设计2》大作业: 贪吃蛇TongJi University CS C++ assignment: greddy snake

概述

本项目是为2020年同济大学计算机系高级程序语言设计2期末作业。实现了一个功能齐全的贪吃蛇游戏。

功能

基础要求

  1. 实现以下3个主题游戏功能
    1. 入门版: 要求玩家控制方向键来控制小蛇的前进方向,以使蛇吃掉面板上随机位置上的食物(位置随机,数量为1-5随机)。每次成功吃掉食物后小蛇体长将增加一点,得分增加。食物吃光则再次随机产生。当小蛇撞到边界或者蛇头与蛇身相撞时,蛇将挂掉,游戏结束。
    2. 进阶版:蛇挂掉后,此时蛇尸身改变显示颜色变成边界,再随机产生新的食物和蛇,游戏继续。直到剩余空间不足以生成新的蛇和食物为止。
    3. 高级版:蛇挂掉后,此时蛇尸身改变显示颜色变成食物,再随机产生新的食物和蛇,游戏继续。直到撞墙次数>5,或剩余空间不足以生成新的蛇和食物为止。
  2. 游戏应实现历史记录功能,将每次游戏的结果记录在文件中,文件编码的格式可以自行决定,但是要求能成功解析并输出到屏幕。应至少保存如下信息,且程序可以灵活增删改查(改查仅限针对用户名)。
  3. 游戏应自行实现菜单功能,要求菜单简洁美观,交互友好,功能明确。
  4. 游戏需要有实时UI,需要实时显示下列信息:
    1. 蛇的长度
    2. 蛇剩余的生命数(对于部分模式)
    3. 当前的分数,不同的果实需要制定不同的加分逻辑,同时死亡或撞墙/穿透也需要不同的扣分逻辑
    4. 历史最高分,当前游玩版本的历史最高分,如果当前分数超过历史最高那么历史最高则与当前分数同步
    5. 游戏时间

加分要求

  1. 更多的游戏逻辑
    1. 分软墙壁和硬墙壁,软墙壁的伤害是撞1块软墙要吃2个食物才能补回来,硬墙壁的伤害是减掉蛇长一半
    2. 地图划分加速区和减速区
    3. 设置体能槽以及体能计算规则,体能槽归零时游戏结束
    4. 食物随机出现“精灵果”和“恶果”,精灵果加分/加体能/加命(结合自行规则),恶果吃到直接游戏结束
    5. 游戏记录保存时可选择同时保存当前地图,以文件形式存放,以便游戏者可选择任意时间继续加载并完成游戏挑战
    6. 扩大地图边界,地图可以非常大,但是屏幕只显示一小块,屏幕外还有非常大的一块隐藏区域,镜头可以随着蛇移动,也可以到边界切换地图区块
    7. RPG模式,实现一个带剧情线路的游戏逻辑,例如在某些阶段要完成指定收集任务,解密任务才能通往下一关
  2. 实现人机对战,AI使用A*算法
  3. 实现双人对战
  4. 实现多人联机对战,目前服务器已关闭,该功能无法使用

运行演示

开始页面

单人游戏

双人游戏

四人联机

创建房间

备注

  1. 最肝的一个大作业,工作量令人发指,如果不是疫情线上教学,根本没时间做到这种程度
  2. 其实可玩性还蛮强的hhh的😂,就是游戏画面挺粗糙的
  3. 这个我感觉值个star吧?

About

同济大学CS《高级程序语言设计2》大作业: 贪吃蛇TongJi University CS C++ assignment: greddy snake


Languages

Language:C++ 99.4%Language:C 0.6%