Scratch is a brilliant platform for learning the basics of coding, especially for young learners. But whether you’re just starting out or you’ve been scratching away for a while, it’s always a good idea to challenge yourself and see how much you can do. Our post about general uses for Scatch can provide you with even more information. Here are ten fun and slightly quirky challenges to test your Scratch skills and get those creative juices flowing.
1. Create a Simple Animation
Challenge:
Make a little animation where a character moves across the screen and does something simple, like waving or jumping.
Why It’s Useful:
Creating a simple animation is an excellent way to get comfortable with the basics of Scratch. This project will introduce you to the fundamental concepts of sprite manipulation, motion blocks, and timing actions. Understanding these basics will provide a solid foundation for more complex projects.
Tips:
- Smooth Movement: Use the
move
andglide
blocks for smooth movement. For example, you can make a sprite glide from one position to another using theglide 1 secs to x: y:
block. This makes the movement appear natural and fluid. - Timing: Play around with the
wait
block to get the timing just right. Thewait
block can be used to pause the animation for a specified amount of time, allowing you to control the sequence of actions. - Costumes and Effects: Change the sprite’s costumes to create a waving or jumping effect. For instance, you can switch between different costumes that show the sprite in various stages of waving.
- Loops: Use loops to repeat actions. For example, if you want the character to keep moving back and forth, you can use a
forever
loop to repeat the movement.
Example:
Imagine a cat sprite moving across the screen, stopping in the middle, and waving at the audience. Here’s how you can do it:
- Choose a Sprite: Select the Scratch Cat sprite or another character of your choice.
- Initial Position: Use the
go to x: y:
block to position the sprite at the starting point on the left side of the screen. - Move to the Centre: Use the
glide
block to make the cat glide to the centre of the screen, likeglide 1 secs to x: 0 y: 0
. - Pause: Add a
wait
block to pause for a moment. - Wave Animation: Change the cat’s costume to a waving position using the
switch costume to
block. - Wait: Add another
wait
block to hold the waving position. - Return to Original Costume: Change the costume back to the original position.
- Move to the Right: Use another
glide
block to make the cat move to the right edge of the screen.
This simple animation can be a fun and engaging way to start your Scratch journey. You can further enhance it by adding background music, sound effects, and more detailed movements.
Advanced Tips:
- Sound Effects: Add sound effects to make the animation more engaging. Use the
play sound until done
block to play a sound when the sprite waves. - Backgrounds: Change the background to match the animation. Use different backdrops for different scenes.
- Multiple Sprites: Introduce additional sprites to create interactions. For example, have another sprite respond to the waving cat.
For more tips and tricks, check out our Scratch guide.
2. Make a Catching Game
Challenge:
Design a game where a character has to catch falling objects. You can keep track of the score and make it harder as the game goes on.
Why It’s Useful:
This challenge introduces you to loops, conditionals, and using variables to keep score. It’s a great way to learn how to create interactive games where the player’s actions affect the outcome.
Tips:
- Falling Objects: Use the
glide
orchange y
blocks to make objects fall from the top of the screen to the bottom. You can randomly position the objects at the top using thepick random
block. - Collision Detection: Use
if
blocks to check when the character catches an object. Theif touching
block can detect when the character touches a falling object. - Scoring: Create a
variable
to keep track of the score. You can increase the score each time the character catches an object using thechange score by 1
block. - Increasing Difficulty: Make the game more challenging by increasing the speed of the falling objects over time. You can decrease the wait time between movements or increase the change in the y-coordinate.
Example:
Let’s say you’re making a game where a basket catches falling apples:
- Choose Sprites: Select a sprite for the basket and another for the apples.
- Basket Movement: Position the basket at the bottom of the screen and control its movement with the arrow keys. Use
when right arrow key pressed
andwhen left arrow key pressed
blocks to move the basket left and right. - Falling Apples: Create a loop to make the apples fall from random positions at the top. Use the
go to x: pick random -240 to 240 y: 180
block to position the apples at random horizontal positions at the top of the screen. - Apple Falling Motion: Use the
repeat until
block with a condition liketouching edge
to make the apples fall. Inside the loop, use thechange y by -10
block to move the apples downwards. - Catching Detection: Use
if touching basket
to detect when an apple is caught. Inside this block, use thechange score by 1
block to increase the score and thehide
block to make the apple disappear. - Reset Apple Position: After hiding the apple, reset its position to the top and make it visible again using the
show
block. - Increasing Difficulty: Gradually increase the falling speed of the apples to make the game more challenging. You can do this by decreasing the wait time between falling movements or increasing the amount the y-coordinate changes.
Advanced Tips:
- Multiple Levels: Add different levels to the game. After a certain score, increase the difficulty by adding more falling objects or increasing their speed.
- Different Objects: Introduce different types of objects, some that give more points and some that deduct points when caught.
- Sound Effects: Add sound effects for catching objects and missing them. Use the
play sound until done
block to play different sounds for different events. - Leaderboard: Create a high score system to track the highest scores achieved. Use a variable to store the high score and compare it with the current score.
3. Design a Quiz
Challenge:
Build a quiz with different types of questions, like multiple choice or true/false.
Why It’s Useful:
Creating a quiz helps you understand how to get input from the user, use broadcasting to manage the flow of the quiz, and handle interactions based on user input. This is a practical way to learn about data handling and user interaction in Scratch.
Tips:
- User Input: Use
ask
andanswer
blocks to get input from the user. This allows you to pose questions and receive responses. - Broadcast Messages: Implement
broadcast
messages to move between different questions or sections of the quiz. Broadcasting helps you manage the flow of the quiz. - Conditionals: Use
if-else
blocks to check the user’s answers and give feedback. You can display messages or change the backdrop based on whether the answer is correct or incorrect. - Score Tracking: Use a variable to keep track of the user’s score. Increase the score for each correct answer.
Example:
Imagine a quiz about general knowledge with three questions:
- Create Backdrops: Create different backdrops for each question. For example, one backdrop for each question and another for the quiz results.
- Pose Questions: Use the
ask
block to pose the first question and store the user’s answer in theanswer
variable. - Check Answers: Use
if-else
blocks to check if the answer is correct. If correct, increase the score using thechange score by 1
block and display a “Correct!” message. If incorrect, display an “Incorrect!” message. - Broadcast Messages: Broadcast a message to switch to the next question backdrop and repeat the process for the remaining questions.
- Display Score: After the last question, broadcast a message to switch to the results backdrop and display the user’s total score using the
say
block.
Advanced Tips:
- Multiple Choice Questions: For multiple choice questions, use sprites for each answer option. Use the
when this sprite clicked
block to handle the user’s selection and check if it’s correct. - Timer: Add a timer to each question to make the quiz more challenging. Use a variable to keep track of the remaining time and display it on the screen.
- Random Questions: Create a larger pool of questions and randomly select a subset for each quiz attempt. Use the
pick random
block to select questions. - Feedback System: Provide detailed feedback for each answer. Use different backdrops or sprites to display explanations for correct and incorrect answers.
4. Build a Virtual Pet
Challenge:
Program a virtual pet that the user can feed, play with, and look after.
Why It’s Useful:
This challenge involves event handling, broadcasting, and creating more complex logic. It’s a fun way to learn how to manage different states and behaviours in your Scratch projects.
Tips:
- Costumes for States: Use different costumes to show the pet’s states, such as happy, hungry, or playing. You can switch costumes based on the pet’s actions.
- Interactions: Create buttons or clickable sprites for actions like feeding, playing, and sleeping. Use
when this sprite clicked
blocks to handle these interactions. - Variables for Needs: Use variables to track the pet’s needs, such as hunger, happiness, and energy. Adjust these variables based on the user’s interactions.
- Broadcasting: Use broadcast messages to manage different activities and transitions between them.
Example:
Let’s create a virtual dog that the user can feed, play with, and put to sleep:
- Choose a Sprite: Select a sprite for the dog and create different costumes for happy, hungry, and playing states.
- Create Buttons: Create buttons or sprites for feeding, playing, and sleeping actions. For example, use a bowl sprite for feeding, a ball sprite for playing, and a bed sprite for sleeping.
- Handle Interactions: Use
when this sprite clicked
blocks to handle clicks on these buttons. For example, when the bowl sprite is clicked, broadcast a message to switch to the feeding state. - Track Needs: Use variables to track the dog’s hunger, happiness, and energy levels. Adjust these variables based on user actions. For example, increase the hunger variable when the dog is fed.
- Switch Costumes: Change the dog’s costume based on its state. For example, switch to a happy costume when the dog is fed and to a sleeping costume when it’s put to bed.
- Display Messages: Use the
say
block to display messages about the dog’s needs and actions. For example, display “I’m hungry!” when the hunger level is low.
Advanced Tips:
- Health System: Add a health system to make the game more challenging. The pet’s health decreases if its needs are not met. Use a variable to track health and display it on the screen.
- Animations: Add animations for different actions. For example, animate the dog eating when it’s fed or playing with a ball when it’s in the playing state.
- Sound Effects: Use sound effects to make the interactions more engaging. Play a barking sound when the dog is happy or a snoring sound when it’s sleeping.
- Multiple Pets: Allow the user to choose between different pets, each with its own needs and behaviours. Create separate sprites and costumes for each pet.
5. Develop a Platformer Game
Challenge:
Create a platformer game where a character jumps between platforms to reach a goal.
Why It’s Useful:
This challenge will teach you about gravity, collision detection, and more advanced movement techniques. Platformer games are a great way to learn about game physics and control.
Tips:
- Gravity Simulation: Use
change y by -n
blocks to simulate gravity. Continuously decrease the y-coordinate of the character to create a falling effect. - Jumping Mechanism: Use
when space key pressed
to make the character jump. Increase the y-coordinate temporarily and then apply gravity to bring the character back down. - Collision Detection: Use
if touching
blocks to detect when the character lands on a platform. Stop the falling effect when the character is on a platform. - Scrolling Background: For larger levels, create a scrolling background to give the illusion of movement through a larger world.
Example:
Imagine a game where a cat jumps between platforms to collect stars and reach the finish line:
- Choose a Sprite: Select a sprite for the cat and create platforms using different sprites or backdrops.
- Implement Gravity: Continuously decrease the cat’s y-coordinate to simulate gravity. Use a
forever
loop withchange y by -2
blocks to make the cat fall. - Jumping Mechanism: Use the space key to make the cat jump. Temporarily increase the y-coordinate using
change y by 10
blocks when the space key is pressed. - Detect Collisions: Use
if touching
blocks to detect collisions with platforms. When the cat touches a platform, set the y-coordinate to stop falling. - Collectibles: Add collectible items like stars. Use
if touching star
blocks to detect when the cat collects a star and increase the score. - Goal: Create a goal at the end of the level. Use
if touching goal
blocks to detect when the cat reaches the goal and display a victory message.
Advanced Tips:
- Enemies: Add enemies that the player must avoid. Use
if touching enemy
blocks to detect collisions and decrease the player’s health or end the game. - Multiple Levels: Create multiple levels with increasing difficulty. Use broadcast messages to switch between levels.
- Power-Ups: Add power-ups that give the player special abilities, like double jump or invincibility. Use variables to track the power-up state and adjust the player’s abilities.
- Level Design: Design more complex levels with moving platforms, obstacles, and hidden areas. Use
glide
blocks to create moving platforms andif touching
blocks to detect obstacles.
6. Simulate a Day-Night Cycle
Challenge:
Create a scene that transitions from day to night, complete with changing colours and a moving sun and moon.
Why It’s Useful:
This challenge introduces you to the concept of loops and gradual changes over time. It’s a great way to learn about controlling visual effects and managing multiple sprites.
Tips:
- Colour Effects: Use the
set colour effect
block to gradually change the colours of the sky. Adjust the effect in small increments to create a smooth transition. - Moving Objects: Animate the sun and moon to move across the sky. Use
glide
blocks to create smooth movements. - Loops for Transition: Use
repeat
blocks to make gradual changes. For example, gradually change the colour effect over 100 steps.
Example:
Imagine a scene where the sun rises in the morning, moves across the sky during the day, sets in the evening, and the moon appears at night:
- Create Backdrops: Create different backdrops for day and night. Use a bright backdrop for the day and a darker one for the night.
- Sun and Moon Sprites: Create sprites for the sun and moon. Position the sun at the bottom left of the screen and the moon at the top right.
- Sunrise and Sunset: Use
glide
blocks to animate the sun rising and moving across the sky. For example,glide 10 secs to x: 0 y: 180
to move the sun to the top of the screen. - Day to Night Transition: Gradually change the backdrop from day to night using the
set colour effect
block. Use arepeat
loop to make the transition smooth. - Moonrise: After the sun sets, make the moon appear and move across the sky. Use
glide
blocks to animate the moon’s movement. - Night to Day Transition: Gradually change the backdrop from night to day using the
set colour effect
block in reverse.
Advanced Tips:
- Stars: Add stars that appear at night. Use a separate sprite for stars and make them visible only at night using the
show
andhide
blocks. - Weather Effects: Add weather effects like rain or snow. Use
clone
blocks to create multiple raindrops or snowflakes and animate their fall. - Ambient Sound: Add background music or ambient sounds that change with the time of day. Use the
play sound until done
block to play different sounds for day and night. - Interactive Elements: Add interactive elements that change with the time of day. For example, flowers that open during the day and close at night.
7. Make a Drawing Program
Challenge:
Design a program that lets users draw on the screen with different colours and brush sizes.
Why It’s Useful:
This project helps you get familiar with the pen extension blocks and handling user input. It’s a creative way to explore how Scratch can be used for artistic projects.
Tips:
- Pen Extension: Use the pen extension blocks like
pen down
,pen up
, andset pen colour
to draw on the screen. You can find these blocks by adding the Pen extension in the Scratch editor. - Mouse Control: Use
when this sprite clicked
blocks to start and stop drawing based on mouse clicks. You can usego to mouse-pointer
blocks to move the sprite to the mouse position. - Colour Selection: Create buttons for different colours. Use
when this sprite clicked
blocks to change the pen colour when a button is clicked. - Brush Size: Allow users to change the brush size. Use variables to track the brush size and
set pen size
blocks to adjust it.
Example:
Let’s create a drawing program with different colours and brush sizes:
- Pen Control: Use
when flag clicked
block to reset the drawing area and set the pen size and colour. Usepen up
andpen down
blocks to control when the pen is drawing. - Mouse Movement: Use a
forever
loop withgo to mouse-pointer
blocks to make the sprite follow the mouse. Useif mouse down
blocks to control when the pen is down and drawing. - Colour Buttons: Create different sprites for colour buttons. Use
when this sprite clicked
blocks to change the pen colour when a button is clicked. - Brush Size Control: Use key press events to change the brush size. For example, use
when up arrow key pressed
to increase the brush size andwhen down arrow key pressed
to decrease it. Use variables to track the brush size andset pen size
blocks to adjust it.
Advanced Tips:
- Eraser Tool: Add an eraser tool that lets users erase parts of their drawing. Use a white pen colour or a special sprite to act as an eraser.
- Save and Load Drawings: Create a system to save and load drawings. Use variables to store drawing data and recreate it when loaded.
- Shapes and Stamps: Add pre-made shapes and stamps that users can place on their drawing. Use sprites for different shapes and
when this sprite clicked
blocks to stamp them onto the drawing area. - Undo Feature: Implement an undo feature to allow users to undo their last action. Use lists to store the drawing steps and recreate them when needed.
8. Create a Story with Multiple Endings
Challenge:
Develop an interactive story where the user can make choices that lead to different endings.
Why It’s Useful:
This project teaches you about branching paths and using variables to keep track of choices. It’s an engaging way to learn how to create interactive narratives.
Tips:
- Story Structure: Plan your story’s structure with different paths and endings. Use a flowchart to map out the choices and outcomes.
- Variables for Choices: Use variables to keep track of the user’s choices. Adjust these variables based on the user’s decisions.
- Broadcasting: Use broadcast messages to move between different scenes and outcomes. Broadcasting helps you manage the flow of the story.
- Backdrops and Sprites: Use different backdrops and sprites to represent different scenes and characters. Change the backdrops based on the user’s choices.
Example:
Imagine a story where the user chooses different paths to explore a haunted house:
- Create Scenes: Create different backdrops for each room in the haunted house. Use different sprites for characters and items the user can interact with.
- Pose Choices: Use
ask
blocks to pose choices to the user. Store the user’s choice in theanswer
variable. - Track Choices: Use variables to track the user’s choices. For example, use a variable called
room
to keep track of the current room the user is in. - Broadcast Messages: Use broadcast messages to switch between scenes. For example, broadcast
go to kitchen
to switch to the kitchen scene. - Multiple Endings: Create different endings based on the user’s choices. Use
if-else
blocks to determine the ending based on the variables tracking the user’s choices.
Advanced Tips:
- Complex Branching: Add more complex branching paths with multiple choices and outcomes. Use nested
if-else
blocks to handle these paths. - Inventory System: Create an inventory system where the user can collect and use items. Use lists to keep track of the items and
if-else
blocks to check for item usage. - Animated Scenes: Add animations to make the scenes more engaging. Use
glide
andswitch costume
blocks to animate characters and objects. - Sound Effects: Add sound effects and background music to enhance the story. Use the
play sound until done
block to play different sounds for different scenes.
Conclusion
These Scratch project challenges are designed to gradually introduce you to the various aspects of Scratch programming. By starting with simple animations and moving on to more complex interactive stories and games, you can develop a solid understanding of programming concepts in a fun and engaging way. Each project builds on the skills learned in previous ones, helping you to become a proficient Scratch programmer capable of creating your own unique projects.