🧺
Coding🔬 Ages 11-13Intermediate 12 min read

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

  1. Delete the cat sprite.
  2. Add a Bowl or Basket sprite (or draw a simple basket). Place it near the bottom of the stage.
  3. 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:

  1. show makes the clone appear (the original was hidden).
  2. go to x: pick random... y: 170 puts the clone at the top, in a random column each time.
  3. repeat until touching edge keeps lowering the clone by 6 each frame until it reaches the bottom.
  4. Inside the loop, if touching Basket? — a catch! Add a point and delete this clone so it vanishes.
  5. 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 touching block 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 timer block.
  • 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?

How do you make each falling object appear in a different place?

What should happen when a clone touches the basket?

What should happen when a clone reaches the bottom uncaught?

How does the basket follow the player?

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.