-
constant.h:通过宏定义的方式定义所有必要的常量,定义必要枚举常量
-
gamecontroller.h&gamecontroller.cpp:定义并实现Gamecontroller类,负责游戏的总体控制
-
snake.h&snake.cpp:定义并实现Snake类,可被Gamecontroller控制
-
food.h&food.cpp:定义并实现Food类,可被Gamecontroller控制,可与Snake相互作用
-
wall.h&wall.cpp:定义并实现Wall类,可被Gamecontroller控制,可与Snake相互作用
-
mainwindow.h&mainwindow.cpp:定义并实现MainWindow类(继承自QMainWindow),与用户交互
- Food:
主要特效有:
(1) 绿色:无特效,+1分
(2) 红色:食用之后变长两节,+2分 (3) 灰色:食用之后可以隐身,穿墙,穿过自身不会死亡,持续时间10秒,+2分
(4) 黄色:食用之后可以加速为原来的二倍,持续时间10秒,+2分
(5) 深蓝色:食用之后减速为原来的一半,持续时间10秒,+2分
(6) 紫色:食用之后可以调转原来的方向,+2分
(7) 天蓝色:食用之后可以瞬间移动,+2分
除红色食物外所有食物均可使蛇增长一节
- Snake:
由蛇身和蛇头组成。蛇身用Qlist储存。含基本信息如长度,得分,颜色,蛇头位置,移动方向,拥有的特效等,以及与其相互作用的组件的信息。默认状态下蛇的颜色为红色,隐身效果下蛇的颜色为灰色。
- Wall:
由方块构成,为砖红色。游戏开始时随机生成,在无敌模式下可以忽略。
- Gamecontroller:
负责控制蛇,食物,砖块的生成,以及对蛇的特殊效果的赋予与剥夺。记录蛇的得分,记录时间,控制游戏的开始与停止。还可以控制夜间模式,无敌模式,BGM播放功能。是整个游戏的核心控制者。
- MainWindow:
负责与用户的交互,可以调用夜间模式,无敌模式,重新开始游戏,播放BGM功能。也是游戏所依赖的QGraphicsView的载体。
游戏开始前,会询问用户想要玩的模式——单人模式,双人模式或AI蛇模式。
- 单人模式
起始界面蛇,墙等组件已经安排好。玩家通过上下左右四个按钮控制蛇的移动。起始状态下蛇不动,玩家随意按压四个按钮中的一个,即可使蛇开始移动。蛇吃到食物之
后,会计分,并在窗口右侧的计分器上现实当前得分。如果吃到有特效的食物,计时器倒计时,倒计时完毕后特效自动消失。每个特效食物生成10s后会被移除。
当蛇头撞到墙,或者自己的身体,游戏结束。玩家可以选择重新开始游戏或停止游戏。停止游戏则会统计玩家的姓名。如果玩家得分较高,则可在排行榜中留名。
在玩游戏的过程中,玩家可以选择夜间模式,无敌模式,中途重新开始游戏,或播放BGM。当前BGM为“四只小天鹅”,备用BGM为“只因你太美”,可通过修改源代码的方式更换
- 双人模式
起始界面两蛇等组件均已安排好。红色的蛇由上下左右四个箭头控制,绿色的蛇由A,W,S,D四个字母按键控制。两蛇相撞不会停止游戏。一蛇撞墙或吃到自己的身体,会被
移除,当两蛇均死时,则停止游戏。玩家同样可以选择夜间模式,无敌模式,中途重新开始游戏,或播放BGM。
- AI蛇模式
蛇自动寻找食物。