Skip to content

Project 1 of Basic Practice of Software Engineering

Notifications You must be signed in to change notification settings

davidwang200099/QSnake

Repository files navigation

软件基础实践•项目1•QSnake

一. 源文件架构

  1. constant.h:通过宏定义的方式定义所有必要的常量,定义必要枚举常量

  2. gamecontroller.h&gamecontroller.cpp:定义并实现Gamecontroller类,负责游戏的总体控制

  3. snake.h&snake.cpp:定义并实现Snake类,可被Gamecontroller控制

  4. food.h&food.cpp:定义并实现Food类,可被Gamecontroller控制,可与Snake相互作用

  5. wall.h&wall.cpp:定义并实现Wall类,可被Gamecontroller控制,可与Snake相互作用

  6. mainwindow.h&mainwindow.cpp:定义并实现MainWindow类(继承自QMainWindow),与用户交互

二. 各个类的基本说明

  1. Food:

主要特效有:

(1) 绿色:无特效,+1分

(2) 红色:食用之后变长两节,+2分 (3) 灰色:食用之后可以隐身,穿墙,穿过自身不会死亡,持续时间10秒,+2分

(4) 黄色:食用之后可以加速为原来的二倍,持续时间10秒,+2分

(5) 深蓝色:食用之后减速为原来的一半,持续时间10秒,+2分

(6) 紫色:食用之后可以调转原来的方向,+2分

(7) 天蓝色:食用之后可以瞬间移动,+2分

除红色食物外所有食物均可使蛇增长一节

  1. Snake:

由蛇身和蛇头组成。蛇身用Qlist储存。含基本信息如长度,得分,颜色,蛇头位置,移动方向,拥有的特效等,以及与其相互作用的组件的信息。默认状态下蛇的颜色为红色,隐身效果下蛇的颜色为灰色。

  1. Wall:

由方块构成,为砖红色。游戏开始时随机生成,在无敌模式下可以忽略。

  1. Gamecontroller:

负责控制蛇,食物,砖块的生成,以及对蛇的特殊效果的赋予与剥夺。记录蛇的得分,记录时间,控制游戏的开始与停止。还可以控制夜间模式,无敌模式,BGM播放功能。是整个游戏的核心控制者。

  1. MainWindow:

负责与用户的交互,可以调用夜间模式,无敌模式,重新开始游戏,播放BGM功能。也是游戏所依赖的QGraphicsView的载体。

三. 游戏模式的说明

游戏开始前,会询问用户想要玩的模式——单人模式,双人模式或AI蛇模式。

  1. 单人模式

起始界面蛇,墙等组件已经安排好。玩家通过上下左右四个按钮控制蛇的移动。起始状态下蛇不动,玩家随意按压四个按钮中的一个,即可使蛇开始移动。蛇吃到食物之

后,会计分,并在窗口右侧的计分器上现实当前得分。如果吃到有特效的食物,计时器倒计时,倒计时完毕后特效自动消失。每个特效食物生成10s后会被移除。

当蛇头撞到墙,或者自己的身体,游戏结束。玩家可以选择重新开始游戏或停止游戏。停止游戏则会统计玩家的姓名。如果玩家得分较高,则可在排行榜中留名。

在玩游戏的过程中,玩家可以选择夜间模式,无敌模式,中途重新开始游戏,或播放BGM。当前BGM为“四只小天鹅”,备用BGM为“只因你太美”,可通过修改源代码的方式更换

  1. 双人模式

起始界面两蛇等组件均已安排好。红色的蛇由上下左右四个箭头控制,绿色的蛇由A,W,S,D四个字母按键控制。两蛇相撞不会停止游戏。一蛇撞墙或吃到自己的身体,会被

移除,当两蛇均死时,则停止游戏。玩家同样可以选择夜间模式,无敌模式,中途重新开始游戏,或播放BGM。

  1. AI蛇模式

蛇自动寻找食物。

About

Project 1 of Basic Practice of Software Engineering

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published