🫧 BUBBLE SHOOTER

Three of a kind pop — and everything hanging from them falls

← Back to Fun Time
Score
0
Popped
0
Shots
0
Best
0

⌨️ Controls

  • or A D swing the aim
  • SPACE or shoot
  • On a phone: tap where you want the bubble to go
  • P pause  •  R new game
  • 🎮 Xbox controller? Just plug it in or pair it — the stick and D-pad are the arrow keys, A is SPACE, Menu pauses and View starts again

🎯 How to play

  • Stick your bubble next to two more of the same kind and all three pop.
  • Bubbles are told apart by their pattern: solid, ring, dotted, striped, crossed.
  • Anything left hanging with nothing above it falls — and falling is worth more.
  • If the bubbles reach the dashed line, the game is over.

🏆 Scoring

  • Popped bubble 10  •  dropped bubble 25.
  • Clearing the whole ceiling is another 500.
  • Shots bounce off the side walls — that is how you reach the corners.
  • Look for the one bubble holding up a whole cluster. Pop that and the lot comes down.

🧑‍💻 For young coders: build this game yourself

This game is split into small library files inside funtime/lib/, and every function has a comment saying exactly what goes in, what comes out, and the algorithm in plain English. Empty any function out, read its comment, and write it yourself.

File What it does Good functions to try re-writing
lib/bubbles-rules.js The rules: aiming, sticking, popping, falling turnShooter, sameGroup, popGroup, dropFloaters
lib/bubbles-draw.js Painting five kinds of bubble without any colour drawBubble, drawShooter, renderGame
lib/bubbles-main.js The glue: the held keys, tap-to-aim, the loop doAction, connectBoard, gameLoop

💡 The big idea: one search, two questions. The same flood fill that asks "which bubbles of this kind are joined together?" also answers "which bubbles are joined to the ceiling?" — you only change where it starts and what it is willing to walk through. Learning one algorithm well beats learning two badly.

🛠️ Want to be walked through it? Build Bubble Shooter Yourself takes you through the key functions one step at a time and tests each one you write. There is a Python version too.