๐Ÿฑ My First Scratch Game ยท Episode 1 of 6 ยท See All Episodes
๐ŸŽ Episode 1 ยท Beginner ยท No Experience Needed

Don't Drop It!
Fruit Catch Game

Move a basket left and right to catch falling fruit. Add a score counter, speed that gets faster over time, and a game-over screen โ€” your first complete Scratch game!

๐Ÿ‘ถ Ages 6+ โฑ๏ธ ~1 Hour ๐Ÿฑ Scratch โœ“ Free
๐Ÿ“ฆ Variables ๐Ÿ” Loops โšก Events ๐ŸŽฒ Random numbers ๐Ÿ”€ Conditionals โฉ Speed scaling
โญ
0 XP
Level 1
๐Ÿ”ฅ0
Your Progress 0 / 8 steps
1
๐Ÿฑ
Open Scratch & Start a New Project
Go to scratch.mit.edu and create a blank project
Active
๐ŸŽฏ
Goal for this step

Get Scratch open in your browser with a blank project ready to build in.

๐Ÿ‘จโ€๐Ÿ‘ง
Parent note: Scratch runs entirely in the browser โ€” nothing to download! Go to scratch.mit.edu. You can build without an account, but creating a free account lets you save and share. For under-13s, a parent creates the account.

Get started

  • 1Open a browser and go to scratch.mit.edu.
  • 2Click the big orange Start Creating button. A new project opens.
  • 3You'll see the Stage (the white area on the right where your game runs) and the Blocks Panel on the left.
  • 4In the middle is the Scripts Area โ€” this is where you drag blocks to build your game.
  • 5There's already a Scratch Cat sprite on the stage. We'll delete it in the next step and use our own sprites.
๐Ÿ’ก
Click the name field at the top ("Untitled") and type "Fruit Catch Game" to name your project now.
โœ๏ธ
Fill in the Blanks
+15 XP
The is the white area where your game runs. You build your game by dragging blocks into the .
๐Ÿง 
Knowledge Check
+15 XP
What is the Stage in Scratch?
AThe panel where you drag blocks to write code
BThe white area on the right where your game runs
CThe list of sprites at the bottom of the screen
2
๐Ÿงบ
Add a Basket Sprite
Create the basket that the player moves left and right
Locked
๐ŸŽฏ
Goal for this step

Add a basket sprite at the bottom of the screen ready to catch falling fruit.

Remove the cat and add a basket

  • 1In the Sprite Panel (bottom right), right-click the Scratch Cat and choose Delete. The stage is now empty.
  • 2Click the blue Choose a Sprite button (cat icon, bottom right). The sprite library opens.
  • 3Search for "Bowl" or choose any wide sprite that looks like a container. Click it to add it.
  • 4Click the Costumes tab (top left) to see the sprite's artwork. You can draw on it to make it look more like a basket if you want!
  • 5Click the Code tab to go back to scripts. In the Properties panel (bottom of screen), set Size to 80 and drag the sprite to the bottom-centre of the stage.
๐Ÿ’ก
Can't find a bowl? You can also click Paint in the sprite menu to draw your own basket from scratch using rectangles!
๐Ÿ”ข
Put It In Order
+15 XP
Click these steps in the correct order to add a basket sprite:
Set the basket's Size to 80 and drag it to the bottom
Right-click the Scratch Cat and delete it
Click "Choose a Sprite" and search for "Bowl"
๐Ÿง 
Knowledge Check
+15 XP
Where do you change a sprite's Size in Scratch?
AIn the Costumes tab
BBy right-clicking the sprite on the Stage
CIn the Properties panel below the Stage
3
โฌ…๏ธ
Make the Basket Move
Add blocks so the player can move the basket left and right
Locked
๐ŸŽฏ
Goal for this step

Make the basket slide left and right when the player presses the arrow keys.

๐Ÿ‘จโ€๐Ÿ‘ง
Parent note: In Scratch, you build code by dragging coloured blocks from the left panel and snapping them together like Lego. The colour of the block tells you which category it belongs to.

Add movement blocks to the basket sprite

  • 1Make sure the basket sprite is selected (click it in the Sprite Panel).
  • 2Click the Events category (yellow) and drag a "when ๐Ÿณ clicked" block into the Scripts Area.
  • 3Click Control (orange) and attach a "forever" loop block underneath.
  • 4Click Control again and drag an "if < > then" block inside the forever loop.
  • 5Click Sensing (light blue) and drag "key [space] pressed?" into the diamond gap. Click the dropdown and change it to "right arrow".
  • 6Click Motion (blue) and put "change x by (10)" inside the if block.
  • 7Add another if block below it (still inside forever). This time check for "left arrow" and use "change x by (-10)".
๐ŸŸ  Basket Sprite โ€” Movement Script
when ๐Ÿณ clicked forever if key [right arrow] pressed? then change x by (10) end if key [left arrow] pressed? then change x by (-10) end end
  • 8Press the Green Flag to test. Your basket should move left and right!
๐Ÿ’ก
Change the 10 to a bigger number like 15 to make the basket faster, or smaller like 6 for more precise control.
โšก
True or False?
+15 XP
"change x by (10)" moves the sprite to the right.
The "key pressed?" block is found in the Motion category.
A "forever" loop is needed so the game keeps checking for key presses.
๐Ÿ’ป
Code Challenge
+20 XP
Fill in the blanks to make the basket move left when the left arrow is pressed:
if key [] pressed? then change x by () end
๐Ÿ’ก Hint: Moving left means the x position gets smaller (negative number).
๐Ÿง 
Knowledge Check
+15 XP
Which block category contains "change x by"?
AMotion (blue)
BEvents (yellow)
CControl (orange)
4
๐ŸŽ
Add a Falling Fruit Sprite
Create a fruit that drops from the top of the screen
Locked
๐ŸŽฏ
Goal for this step

Add a fruit sprite that appears at a random position at the top and falls to the bottom.

Add the fruit sprite

  • 1Click Choose a Sprite and search for "Apple" or any fruit you like. Add it to the stage.
  • 2Set its Size to 50 in the properties area.
  • 3Click the Code tab with the fruit sprite selected.
  • 4Drag a "when ๐Ÿณ clicked" block in. Attach a "forever" loop.
  • 5Inside forever, add "go to x: (pick random -200 to 200) y: (180)" โ€” this puts the fruit at a random spot at the top.
  • 6Now add a "repeat until" loop. For the condition, use "y position < -160" (Operators category, green โ€” pick the < block and fill in the Sensing y position block on the left).
  • 7Inside the repeat, add "change y by (-5)". This makes the fruit fall 5 pixels every step.
๐ŸŽ Fruit Sprite โ€” Fall Script
when ๐Ÿณ clicked forever go to x: (pick random (-200) to (200)) y: (180) repeat until (y position) < (-160) change y by (-5) end end
  • 8Press the Green Flag. The fruit should fall from the top, reach the bottom, then restart from a new random position!
โšก
True or False?
+15 XP
The "forever" block makes code repeat over and over without stopping.
Setting y to 180 puts the fruit at the bottom of the stage.
"change y by (-5)" makes a sprite move downward.
๐Ÿ’ป
Code Challenge
+20 XP
Fill in the blanks to make the fruit start at a random position at the top of the stage:
go to x: (pick random (-200) to (200)) y: () repeat until (y position) < () change y by () end
๐Ÿ’ก Hint: The top of the stage is y=180. The fruit needs to fall downwards (negative y change).
๐Ÿง 
Knowledge Check
+15 XP
What does "pick random -200 to 200" do?
AIt moves the fruit 200 pixels to the right
BIt picks a random x position so the fruit can appear anywhere across the stage
CIt makes the fruit spin 200 degrees
5
โญ
Add a Score
Detect when the basket catches the fruit and add points
Locked
๐ŸŽฏ
Goal for this step

Create a Score variable and add 1 point every time the basket catches a piece of fruit.

Create the Score variable

  • 1Click Variables (orange) in the blocks panel, then click "Make a Variable". Name it Score and click OK.
  • 2A Score counter appears on the stage automatically.
  • 3Select the Fruit sprite and find your falling script. Inside the repeat until loop, add an "if < > then" block.
  • 4For the condition, use Sensing โ†’ "touching [Sprite1]?" โ€” pick your basket sprite from the dropdown.
  • 5Inside that if block, add Variables โ†’ "change Score by (1)".
  • 6Also add "go to x: (pick random -200 to 200) y: (180)" right after it โ€” this resets the fruit immediately when caught.
๐ŸŽ Fruit Sprite โ€” Updated Fall Script
when ๐Ÿณ clicked set [Score] to (0) forever go to x: (pick random (-200) to (200)) y: (180) repeat until (y position) < (-160) change y by (-5) if touching [Bowl]? then change [Score] by (1) go to x: (pick random (-200) to (200)) y: (180) end end end
๐Ÿ’ก
Also add "set Score to 0" right after the "when ๐Ÿณ clicked" block so the score resets every time you start the game.
๐Ÿ”ฎ
Predict What Happens
+15 XP
You've added the "touching [Bowl]?" check inside the repeat-until loop, but you forgot to add "go to x: random y: 180" after changing the score.

What will happen when the basket catches the fruit?
AThe score goes up but the fruit keeps falling in the same spot
BThe score goes up but the fruit keeps falling from where it was caught instead of resetting to the top
CThe game crashes
๐Ÿ’ป
Code Challenge
+20 XP
Fill in the blanks to detect when the fruit touches the basket and add a point:
if [Bowl]? then change [Score] by () end
๐Ÿ’ก Hint: We need a Sensing block that checks if the fruit is touching the basket.
๐Ÿง 
Knowledge Check
+15 XP
Why do we add "set Score to 0" at the start of the script?
ASo the score goes up by 0 each time
BTo delete the variable
CSo the score resets to 0 every time you start a new game
6
๐Ÿ’จ
Make It Get Faster!
Increase the fruit's falling speed as the score goes up
Locked
๐ŸŽฏ
Goal for this step

Create a Speed variable and make the fruit fall faster every time the score reaches certain numbers.

Create a Speed variable

  • 1Go to Variables โ†’ Make a Variable. Name it Speed. Uncheck the box next to it so it doesn't show on screen.
  • 2At the top of your fruit script (right after "when ๐Ÿณ clicked"), add "set Speed to (5)".
  • 3Change your "change y by (-5)" block to "change y by (Speed ร— -1)" โ€” use the Operators multiply block with Speed and -1.
  • 4After the catch block that adds score, add an "if Score > 5 then set Speed to 8" block.
  • 5Add another: "if Score > 10 then set Speed to 12".
  • 6Add a final one: "if Score > 20 then set Speed to 16".
๐ŸŽ‰
Test it now โ€” the game gets much harder the better you do. Try to beat your own high score!
๐Ÿ”ฎ
Predict What Happens
+15 XP
Your game is running. The player has caught 7 pieces of fruit. The Speed variable started at 5. You have these rules:
โ€ข If Score > 5 โ†’ set Speed to 8
โ€ข If Score > 10 โ†’ set Speed to 12

How fast is the fruit falling right now?
A5 โ€” Speed never changed
B12 โ€” because 7 is greater than 5 so it jumps to the highest
C8 โ€” because Score (7) is greater than 5 but not greater than 10
โœ๏ธ
Fill in the Blanks
+15 XP
To make the fruit fall faster over time, we created a variable called and used the category to multiply it by -1.
๐Ÿง 
Knowledge Check
+15 XP
When the score reaches 10, what should the Speed variable be set to?
A5
B12
C10
7
๐Ÿ’”
Add Lives & Game Over
Lose a life when fruit hits the floor โ€” game ends at zero lives
Locked
๐ŸŽฏ
Goal for this step

Add a Lives variable that decreases when fruit reaches the floor, and stop the game when lives run out.

Add Lives

  • 1Make a new variable called Lives. Set it to 3 at the start of your fruit script.
  • 2After your repeat until y < -160 loop ends (the fruit hit the floor), add "change Lives by (-1)".
  • 3Below that, add an "if Lives < 1 then" block.
  • 4Inside that if block, add Looks โ†’ "say [Game Over! Score: ] for (2) seconds".
  • 5Then add Control โ†’ "stop [all]" to end the game completely.
๐ŸŽ Fruit โ€” After repeat-until loop
change [Lives] by (-1) if (Lives) < (1) then say (join [Game Over! Score: ] (Score)) for (2) seconds stop [all] end
๐Ÿ’ก
Use the Operators โ†’ join block to combine the words "Game Over! Score: " with the actual Score number in the say block.
๐Ÿ’ป
Code Challenge
+20 XP
Fill in the blanks to lose a life and check for game over:
change [Lives] by () if (Lives) < () then stop [] end
๐Ÿ’ก Hint: We subtract 1 life each time. The game ends when lives drop below 1. "stop" needs to stop everything.
๐Ÿง 
Knowledge Check
+15 XP
Why do we check "if Lives < 1" instead of "if Lives = 0"?
AIt's safer โ€” catches cases where Lives might go below zero
BScratch doesn't have an "equals" block
CIt makes the game easier
8
๐ŸŽ‰
Add a Backdrop & Share!
Make the game look great and share it with friends
Locked
๐ŸŽฏ
Goal for this step

Choose a fun backdrop, test the full game and publish it so anyone can play!

Add a backdrop

  • 1Click the Stage thumbnail (bottom right, below your sprites). Click "Choose a Backdrop".
  • 2Pick a fun background โ€” try "Blue Sky" or "Farm" for a fruity feel!
  • 3Press the Green Flag and play through the whole game. Try to reach 20 points!
  • 4Check lives work correctly โ€” 3 lives, game over when they run out.
  • 5If you have an account, click File โ†’ Save now to save your project.
  • 6Click the orange Share button at the top right. Your game gets a public URL!
  • 7Copy the link and send it to friends and family so they can play your game.
๐ŸŽ‰
You just built and published your first Scratch game! Can you beat your own score? Try Episode 2 for your next challenge.
๐Ÿ”ข
Put It In Order
+15 XP
Click these in the correct order to finish and share your game:
Press the Green Flag and play-test the full game
Copy the link and send it to friends
Choose a backdrop from the library
Click File โ†’ Save now, then click Share
โšก
Final True or False!
+15 XP
You need a Scratch account to share your game with a public link.
The "join" block is found in the Variables category.
This game uses 3 variables: Score, Speed, and Lives.
๐Ÿง 
Final Knowledge Check
+15 XP
Which of these is NOT a variable you created in this game?
AScore
BHealth
CSpeed
DLives
๐ŸŽ‰๐ŸŽ๐Ÿฑ๐ŸŽŠ๐Ÿงบ
You Built a Scratch Game!

Amazing โ€” you've made a real published game with a moving basket, falling fruit, score, lives and game over. Now try Episode 2!

0
Total XP
1
Level
0
Best Streak
0%
Accuracy
๐Ÿฆ˜ Episode 2: Platformer Game โ†’ โญ View My Progress & Certificates

This workshop was free and took many hours to build. If it helped you learn something new, consider supporting the project.

☕ Support on Ko-fi