3。3。1 玩家功能模块
玩家类主要有三个功能,分别是开始游戏,关卡选择和游戏控制。如图3-1。
图3-1 玩家功能模块图
3。3。2 游戏控制模块
主要就是控制游戏的开始和中途退出;控制棋子是否是正确移动,消除的棋子是否是冰块上的棋子,当冰块上没有可以消除的棋子时,需要通过消除冰块周围的棋子来达到消除冰块上的棋子的目的;判断当前是否过关,结算记录。如图3-2。
图3-2 游戏控制模块
(1)这个模块的关键部分就是棋子部分的功能:源G于J优L尔V论N文M网WwW.youeRw.com 原文+QQ75201`8766 ----------------
1)消除相同图案的棋子后,会随机产生下落的棋子。
2)产生随机下落棋子后,能判断其位置的上下左右八个棋子是否满足可以消除的条件;如果构成三消的条件,再往外判断上下左右八个棋子是否构成四消或者五消。
3)交换的两颗棋子是否是相邻的棋子,如果是相邻的棋子又满足三消的条件,就可以消除;如果不构成,则不交换。
4)每一个关卡想要顺利通关,都要同时满足两个条件:在规定的步数内和完成任务才能结束这一关。
5)消除的棋子越多,得到的分数也就越高。
6)每一关的任务都是由简到难,只有完成了简单的关卡,才能继续后面困难的关卡,不可以跳过任何一关,但是已经顺利完成的关卡是可以反复玩的。
(2)棋子的变换与消除
当一行或者一列棋子中,与上下左右四周围有相同棋子时,可以交换,以达到消除的目的。删除棋子时,要先把为空棋子移除列的棋子集合,如果当前的棋子为空,并且格子的状态为可用状态的话,则要把棋子从当前的列集合中移除。两颗棋子进行交换时,必须要构成三消,才能进行交换;不能构成三消的,则会回到原来的位置。
(3)棋子的重新排列
首先要从下往上遍历一列,判断当前棋子是否为空并且格子是否可用,然后从下往上遍历,找出空棋子的上方最近的棋子,并且把这颗棋子移动到空棋子所在的位置,当前列的棋子消除后,每列会补充新的棋子,设置好棋子所在的下标,先移动没被删除的棋子,再移动被删除的棋子。
(4)障碍物的设计
障碍物就是在玩游戏的时候,棋盘上会有空格,就会增加过关的难度。障碍物的生成是为了给游戏添加难度,让游戏的难度可以层层递进,从简单到难的过程中能有一个过渡。生成障碍物后并把障碍物添加进集合。
3。3。3 UI显示模块
显示模块主要就是接收需要显示的数据,显示的数据底下又分为显示当前关卡数据,显示玩家当前分数,步数,显示关卡通关情况等等。如图3-3。
图3-3 UI显示模块
3。4棋盘模块功能
1)关卡的设计
综合考虑步数、关卡目标分、棋盘的行数以及列数,从创建的Json文本中读取数据,并按照读取的数据生成关卡。
2)棋盘的检测
当棋盘准备好之后,需要检测棋盘。
3)棋盘管理
关卡的不同,棋盘的列数也不同,棋盘列生成之后,分配上、下、左、右四周围的邻居。
3。5 游戏业务流程
这款游戏的流程图,主要就是简单的描述了用户进入游戏之后,可以进行的各种操作。如图3-4。
图3-4 游戏业务流程图
4系统实现
4。1 游戏基本类
这款游戏采用的是C#语言进行编程的,里面所有物体使用的都是面向对象的思想。这款游戏,所有的交互方式都是通过消息来交互的,因此,所有的类都是消息类。如图4-1。