领导最近在玩泡泡龙,我也想不通为什么突然又对这么古老的游戏感兴趣了。昨晚在地铁上,她问我这种游戏能做吗?我不加思考回答道:当然,超简单。今天从深大地铁站出来,这个问题突然冒了出来,到公司的路上花了几分钟思考了下实现细节。从最简单的玩法开始:相同颜色的泡泡三个以上可以消除。
核心数据结构我采用链表数组,将相同颜色且邻接的泡泡串成一个链表。采用这种数据结构,是基于下面考虑:1)通过颜色划分缩小搜索区域;2)没有排序,没有中间插入节点的需求;3)节省内存。当然,游戏界面中的泡泡还是把它对应到一个二维数组中,每个元素存储一个泡泡对象的指针,该对象中至少包含:颜色、坐标,分值。如下图所示:
剩下需要考虑的是发射泡泡颜色如何产生?如果从空关卡开始,前面可以用随机,后面就要使用统计信息了。在每个链表头可以统计该堆泡泡开闭性、数量等,利用这些信息可以决定发射泡泡的颜色。