Skip to content

益智泡泡龙

英文名:Puzzle Bobble

Github 另有视频,详见各视频平台。

益智泡泡龙

素材资源

美术资源1
美术资源2
音效
音乐

参考资料

洪水算法
Puzzle Bubble 在线游玩
Puzzle Bubble 2 在线游玩

设计与实现

游戏规则

这是款三消类游戏。泡泡从中间发射台发射,碰到墙壁会反弹,碰到别的泡泡或陷阱机关底部会停止。碰到泡泡停止后会对该泡泡周围进行检测,当相连的相同泡泡数超过三个时它们就会被消除。消除后,不与顶部直接或间接相连的泡泡会下落。
随着时间流逝陷阱机关会下降,使得能够存放泡泡的区域变小。
场地中的泡泡被全部消灭后游戏胜利。当场地中泡泡逼近发射台水平线时游戏失败。

主要的游戏对象

场地(Playfield):存放泡泡的地方。设计为12行8列,最下面两行在关卡设计时不能设置泡泡。
发射台(Launcher):发射泡泡
泡泡(bubble):……
陷阱机关(trap):随着时间流逝,它会下降,使场地中能存放泡泡的区域变小。

场地(Playfield)

用一个二维数组存放泡泡。泡泡从发射台发射,碰到墙壁会反弹,碰到陷阱机关底部或其他泡泡时,会被加入场地中(添加到二维数组)。

这是设计的两种坐标。左侧的画布坐标即游戏中的坐标。右侧的泡泡坐标即二维数组中的坐标。圆心坐标可以相互转换

泡泡坐标 -> 画布坐标

将圆心的泡泡坐标转换为画布坐标,先判断其位于奇数行还是偶数行(行数从0开始计算),然后在根据列的特征计算其纵坐标。

画布坐标 -> 泡泡坐标


根据逐行递增3r 以及上图(泡泡碰撞时的临界状态)的特征,我们可以计算出其所在的纵坐标,然后在根据奇、偶数行的特点算出横坐标。

邻居坐标

从这里我们可以很容易的找出泡泡坐标中任意一位置的邻居坐标。

算法

可以看一下参考资料

消除泡泡

对于要消除的泡泡,我使用的是下图这种: 这里记录的坐标就是要消除的泡泡的坐标。

下落泡泡

对于获取那些在泡泡消除后悬空的泡泡(不与顶部直接或间接相连的泡泡),与上图算法略有不同。

  1. 将顶部泡泡的坐标放入栈中,并从棋盘中移除。
  2. 从栈顶拿出一个坐标,获取直接相连的泡泡的坐标,并将它们放入栈中
  3. 将这些坐标中的泡泡从棋盘中移除。
  4. 重复2、3,直至栈为空
  5. 最后,棋盘中剩余的泡泡即为悬空的泡泡(会掉下去的泡泡)