Catch the Falling Objects Game in Scratch
A step-by-step middle-school lesson on building a catch-the-falling-objects game in Scratch: a basket you move, apples that fall using clones, catching them for points, a timer, and game over. With a worked project and quiz.
Key takeaways
- Falling-object games use clones so many items can fall at once from one sprite
- Each clone starts at a random x at the top and glides or steps down to the bottom
- Catching is detected with 'touching' the basket, which adds a point and deletes the clone
- A timer or a 'misses' limit gives the game an ending
What is a catch game?
A catch game is a small, satisfying project: objects fall from the top of the screen and you slide a basket along the bottom to catch them. Catch an apple, score a point; let one drop, and you lose. It is one of the best ways to learn clones in Scratch — the feature that lets a single sprite produce many copies of itself, so lots of apples can fall at the same time.
This lesson builds a complete catch-the-apples game with a moving basket, falling fruit, a score, and a game over. If Scratch is new to you, begin with getting started with Scratch. Clones are the heart of this project, so if you have not met them, the lesson on cloning sprites in Scratch is the perfect companion.
The big idea: one sprite, many clones
Imagine you had to add 30 separate apple sprites and write a falling script for each — exhausting. Instead, we make one apple sprite and tell it to create a clone of itself every second or so. Each clone is a fully working copy that runs its own script: it picks a random spot at the top, falls down, and either gets caught or hits the bottom. When it is done, it deletes itself. This way a single, short script produces an endless stream of apples.
Step 1: Add the basket and the apple
- Delete the cat sprite.
- Add a Bowl or Basket sprite (or draw a simple basket). Place it near the bottom of the stage.
- Add an Apple sprite. We will not show this original much — it stays hidden and just makes clones.
Step 2: Move the basket
Click the basket sprite. We'll steer it with the mouse so it feels smooth:
when green flag clicked
set y to -150
forever
set x to (mouse x)
The basket now slides left and right along the bottom, following your mouse. (Prefer keys? Replace the loop with if key right arrow pressed? change x by 8 and a matching left-arrow check.)
Step 3: Make the apple spawn clones
Click the apple sprite. The original apple's only job is to keep producing clones. Build:
when green flag clicked
hide
forever
wait 1 seconds
create clone of [myself v]
The hide keeps the original invisible. Every second the loop makes a new clone. We will make those clones visible and falling in the next step.
Step 4: Make each clone fall
Still on the apple sprite, add a separate script for what a clone does the moment it is born:
when I start as a clone
show
go to x: (pick random -220 to 220) y: 170
repeat until <touching [edge v]?>
change y by -6
if <touching [Basket v]?> then
change [score] by 1
delete this clone
delete this clone
Walk through it:
- show makes the clone appear (the original was hidden).
- go to x: pick random... y: 170 puts the clone at the top, in a random column each time.
- repeat until touching edge keeps lowering the clone by 6 each frame until it reaches the bottom.
- Inside the loop, if touching Basket? — a catch! Add a point and
delete this cloneso it vanishes. - The final delete this clone runs if the apple reaches the bottom uncaught, cleaning it up.
You will need a score variable — make one (Variables → Make a Variable) and it will count your catches. If variables are new, see variables and score in Scratch.
Click the green flag. Apples rain down, and any that land in your basket bump the score!
Step 5: Count misses and end the game
Catching is fun, but the game needs stakes. Let's count the apples you miss. Make a second variable, misses. Update the clone script so a clone that reaches the bottom uncaught adds to it:
when I start as a clone
show
go to x: (pick random -220 to 220) y: 170
repeat until <touching [edge v]?>
change y by -6
if <touching [Basket v]?> then
change [score] by 1
delete this clone
change [misses] by 1
delete this clone
Notice the change [misses] by 1 now sits after the repeat loop — it only runs for a clone that fell all the way to the edge without being caught.
Now end the game when misses reach 3. The cleanest place for this is a small "referee" script on the apple sprite:
when green flag clicked
set [score] to 0
set [misses] to 0
wait until <(misses) = 3>
say [Game Over!] for 2 seconds
stop [all]
When you miss three apples, the game stops. (Be sure this script also resets score and misses to 0 at the start so each play begins fresh.)
Step 6: Make it harder over time
A great touch is speeding up as the player does well. Have apples spawn faster the higher the score. Change the spawner loop:
when green flag clicked
hide
forever
create clone of [myself v]
wait (2 - ((score) / 10)) seconds
Early on, apples appear about every 2 seconds. As the score climbs, the wait shrinks, so fruit falls thick and fast. Tune the numbers to taste.
Common mistakes and how to fix them
- All apples fall from one spot. Move
set x to pick random...to the very start of the clone script, after the clone is created — not in the spawner. - The game lags after a while. Some clones never get deleted. Every path through the clone script must end in
delete this clone. - Catching does not register. The basket name in the
touchingblock must match exactly — choose it from the dropdown.
Reading your scripts in order to find these issues is called debugging, and every game maker does it.
Try it: make it your own
You have a working catch game. Now extend it:
- Falling bombs: add a second clone type (a different costume) that loses points or a life if you catch it.
- A timer challenge: instead of misses, give the player 30 seconds to catch as many as possible using the
timerblock. - Power-ups: a golden apple worth 5 points that appears rarely.
- Sound and sparkle: play a sound and flash a costume each time you catch one.
Clones unlock a huge range of games — rain, bullets, stars, enemies. Once this clicks, try making a Pong game in Scratch to practise bouncing too. Happy catching! 🧺
Quick quiz
Test yourself and earn XP
Why are clones useful in a falling-object game?
Clones let a single sprite spawn many copies that each fall on their own, instead of you placing dozens of separate sprites.
How do you make each falling object appear in a different place?
Picking a random x from one side of the stage to the other spreads the objects across the top so they fall in different columns.
What should happen when a clone touches the basket?
A catch means a point: you 'change score by 1' and 'delete this clone' so the caught object disappears.
What should happen when a clone reaches the bottom uncaught?
If a clone touches the bottom edge without being caught, you can add to a 'misses' variable and delete the clone.
How does the basket follow the player?
Setting the basket's x to the mouse position every frame, or nudging x with the arrow keys, lets the player steer it.
FAQ
You are setting the x position before the clone is created, or you forgot the 'pick random' block. Put 'set x to (pick random -220 to 220)' at the very start of the 'when I start as a clone' script, so each clone chooses its own column.
Clones are not being deleted, so hundreds pile up. Make sure every clone ends in a 'delete this clone' — both when it is caught and when it reaches the bottom. Scratch also has a limit of 300 clones, so cleaning them up keeps the game smooth.
Keep exploring
More in Coding