Skeletons are considerably more entertaining when they dance.
This Scratch animation project turns a Halloween scene into a Skeleton Dance Party while giving kids a chance to explore how programmers create movement, repetition, timing, and coordinated actions.

Instead of making a character perform one action and stop, kids can use Scratch to build a sequence of movements and repeat those instructions to create an animation.
Add sound, multiple sprites, costume changes, and carefully timed actions, and a simple Halloween scene starts behaving much more like a real animated program.
Play our Skeleton Dance Party Scratch project below, then open the code to see how the animation works.
Open or Remix Skeleton Dance Party on Scratch →
This project is also part of our growing collection of Halloween Scratch coding activities, including Witch Wardrobe Conditional Statements and Halloween Conditional Collisions.
How This Scratch Animation Project Works
Animation creates the illusion of movement by changing what we see over time.
In Scratch, we can animate sprites by changing their position, direction, appearance, size, costume, or other properties.
A sprite might: move across the Stage, turn, glide, change costumes, grow or shrink, appear and disappear, or perform several of those actions together.
Scratch’s own Animate a Character materials encourage kids to experiment with movement, characters, backdrops, and multiple kinds of animation rather than treating animation as one specific block or technique.
Start with the Skeleton Dance Party
Before looking at the code, run the finished project. Watch what happens carefully rather than immediately clicking See Inside on the OurFamilyCode Scratch Project page.
Ask: What is moving? What repeats? Which actions happen at the same time? Do different characters move differently? How does sound change the animation?
Those observations give kids something concrete to look for when they open the code.
Animation Is Really a Sequence of Instructions
Scratch does not know how to dance. We have to describe the dance using instructions.
That might mean telling a sprite: move, turn, wait, change costume, move again, then repeat. Each instruction by itself is simple.
The animation appears when Scratch performs those instructions in sequence quickly enough that the actions feel connected.
This is an important programming idea because a complicated result can often be built from many small instructions arranged in the right order.
Why Timing Matters in Scratch Animation
A dance move that happens instantly can be hard to see. Add a short delay, and suddenly the movement becomes easier to understand..
The wait block gives programmers control over timing, which helps determine the rhythm and speed of the animation.
Conceptually:
move
wait
turn
wait
move
creates a very different animation from:
move
turn
move
even though the basic actions are similar. Timing determines the rhythm of the program.
Experiment with Wait Time
Changing only the wait value is a simple way to investigate animation timing.
Try: wait 1 second
Then: wait 0.5 seconds
Then: wait 0.1 seconds
What changes?
Smaller delays generally make a sequence appear faster, while longer delays separate the individual movements more clearly.
This gives kids an easy way to see that numbers inside code affect the behavior of an animation.
Use Loops to Repeat Dance Moves
Dancing involves repetition. Thankfully, Scratch has loops. Without a loop, a programmer might write:
move
turn
move
turn
move
turn
move
turn
That works, but it repeats the same instructions unnecessarily. Instead, Scratch can repeat a group of instructions with a loop.
repeat 4
move
turn
end
The result may be similar, but the code is shorter and easier to change.
Repeat Versus Forever
Scratch includes several kinds of loops.
A repeat loop runs a specific number of times.
A forever loop continues until the program stops.
For a short dance routine, a repeat block might make sense.
For an animation that should continue throughout the project, a forever loop may be more useful.
Choosing the right loop depends on what we want the animation to do.
Build the Dance with Custom Blocks
Instead of placing every movement and costume change inside one enormous script, this project uses custom blocks to break the dance into smaller reusable pieces.
In Scratch, custom blocks appear under My Blocks. They let programmers give a group of instructions a meaningful name and then call that group whenever it is needed.

Our skeleton uses two custom blocks:
skeleton dance
and
skeletonMovesABCD
The larger skeleton dance block controls where the skeleton moves across the Stage. Inside that routine, Scratch calls skeletonMovesABCD, which handles the actual costume sequence.
That means the code is organized into separate jobs: Movement across the Stage is handled by one block.
The skeleton’s body animation is handled by another. This makes the project easier to read, easier to debug, and much easier to change later.
The main script then becomes surprisingly simple:
When the green flag is clicked, broadcast the music, repeat the skeleton dance three times, reset the skeleton’s direction and costume, broadcast the end message, and stop the project.
That is an important programming idea called decomposition.
Instead of solving one large problem all at once, programmers divide it into smaller pieces that each have a clear responsibility.
Turn a Simple Movement into a Dance
Start with one movement. Maybe the skeleton turns slightly to the right.
Then turn it back to the left. Now repeat those two actions. Suddenly we have a simple dance.
Add another movement, such as changing the sprite’s vertical position, and the skeleton might appear to bounce. Small changes can create very different personalities.
Animate with Motion Blocks
Scratch’s blue Motion blocks control where sprites move on the Stage.
Kids can experiment with:
move steps
turn degrees
go to x: y:
change x by
change y by
glide
Each creates a different type of motion.
A glide produces smooth movement from one location to another, while changing x or y values can create more controlled movement along one axis.
Understanding X and Y Positions
The Scratch Stage uses coordinates.
The x-coordinate controls left and right position.
The y-coordinate controls up and down position.
This means animation can also become a math activity.
If a skeleton changes its x-position, it moves horizontally.
If it changes its y-position, it moves vertically.
Change both and the sprite can travel diagonally across the Stage.
Scratch’s educator materials explicitly use the Stage coordinate system when teaching animation, with x controlling left-to-right position and y controlling top-to-bottom position.
Use Coordinates to Make the Skeletons Dance Together
The second skeleton uses the same basic dance algorithm, but its starting position and direction are reversed.
One skeleton begins around:
x: 150
while the other begins around:
x: -150
That places them on opposite sides of the Stage.
Their custom skeletonDance blocks then glide them across the Stage and back again.
This is a good example of how programmers can reuse the same general idea while changing a few values to create a coordinated effect.
The two skeletons are not moving because Scratch understands choreography.
They appear coordinated because their positions, directions, loops, and timing were designed to work together.
That also gives us a nice math connection.
Negative x-values are on the left side of the Scratch Stage.
Positive x-values are on the right.
Using -150 and 150 creates nearly mirrored starting positions around the center.

Try giving a skeleton several positions.
For example:
go to x: -100 y: 0
go to x: 0 y: 50
go to x: 100 y: 0
Add waits or glides between the positions.
Now the sprite moves through a planned dance path.
Kids can sketch the path on paper first and then translate it into coordinates.
Animate the Skeleton with Costumes
Movement is only one way to create animation in Scratch. A sprite can also appear to move by changing its costume.
Many Scratch sprites include several costumes that show the character in slightly different poses. When those costumes are switched in sequence, the changes can create the illusion of motion even if the sprite stays in the same place.
In our Skeleton Dance Party project, the skeleton uses the custom skeletonMovesABCD block to cycle through four different costumes:
skeleton-a
skeleton-b
skeleton-d
skeleton-e
A one-second wait separates each costume change.
That timing matters. If Scratch switched through all four costumes instantly, the movement would be difficult to see. The pauses give our eyes enough time to register each pose before the next one appears.
This works a little like frame-by-frame animation. Each costume acts like a separate frame, and Scratch displays those frames in sequence.
The skeleton is also moving across the Stage at the same time, so the project combines two different kinds of animation:
Motion animation changes the sprite’s position.
Costume animation changes the sprite’s appearance.
When those techniques work together, the skeleton looks like it is actually dancing instead of simply gliding from one side of the Stage to the other.
The wait blocks also control the speed of the costume animation.
Shorten the wait time, and the skeleton changes poses more quickly.
Lengthen it, and the dance becomes slower and more exaggerated.
That gives kids a simple experiment to try:
Change only the wait time and observe how the skeleton’s dance changes.
The code itself stays the same. Only the timing changes, making it easy to see how a single value can affect the entire feel of an animation.

Use a Broadcast to Start the Music
The main skeleton script does not play the music directly.
Instead, it broadcasts a message called:
music
A separate script listens for that message:
when I receive [music]
and then repeatedly plays the Dance Funky sound.
This separates the dance choreography from the music system.
The skeleton can continue performing its movement code while the music runs in another script.
That is an example of parallelism in Scratch: multiple scripts can run during the same period of time.
It also makes the project easier to organize.
One script is responsible for choreography.
Another is responsible for music.
That is much cleaner than trying to force everything into one long stack of blocks.
Start Sound Versus Play Sound Until Done
Scratch provides sound blocks that behave differently.
A block that starts a sound allows other instructions to continue while the audio plays.
A play sound until done style of block waits for the sound to finish before continuing through that particular script.
That difference matters when trying to animate movement while music is playing.
One common solution is to let sound and animation run in separate scripts so both can happen at the same time. Scratch community guidance describes this exact approach for playing music while costume animation continues.
Programs Can Do More Than One Thing at Once
This is one of the coolest concepts in Scratch.
A sprite can have more than one script beginning with:
when green flag clicked
One script might control the music.
Another might control movement.
Another might change costumes.
Those scripts can run concurrently.
Instead of building one enormous stack of blocks, programmers can divide responsibilities among smaller scripts.
What Is Parallelism in Scratch?
Parallelism means multiple sequences of instructions can run during the same period of time.
In a Skeleton Dance Party, that might mean one skeleton dances while another moves somewhere else and music plays in the background.
Each behavior can have its own script.
This is especially useful for animation because real scenes usually contain several things happening at once.
Coordinate Multiple Sprites
A dance party becomes more interesting when there is more than one dancer.
Add another sprite.
Give it a different routine.
Maybe one skeleton spins while another jumps.
Maybe one moves every half second while another moves every second.
Now kids have to think about how several independent animations fit together.
Events Start the Animation
Most Scratch projects need an event telling them when to begin.
The familiar:
when green flag clicked
block is an event.
It tells Scratch:
When this happens, start running the blocks below.
Other events can start animation too.
A sprite might begin dancing when clicked or after receiving a broadcast message.
That makes animation interactive instead of completely automatic.
Animate the Bat with Custom Blocks and Parameters
The bat uses a more advanced version of Scratch custom blocks.
Instead of creating only a named action, the bat defines:
flyLeft (n) times
and
flyRight (n) times
The n is a parameter.
A parameter lets us send information into a custom block.
For example:
flyLeft 7 times
tells Scratch to run the flying routine seven times.
That makes the block reusable.
We can change the number without rewriting the flying code.
Inside the custom block, Scratch uses:
repeat n
so whatever number we pass into the block controls how many times the bat repeats the flight sequence.
This is a big step toward the way functions work in text-based programming languages.
Make the Bat Flap Its Wings
The bat alternates between different costumes while it moves.
It switches between bat-a and bat-b, then glides to a new position.
Changing costumes while the sprite moves makes the bat appear to flap its wings.
Again, the animation comes from combining two different things:
appearance changes
and
position changes
Add Random Movement
The bat does not glide to exactly the same coordinate every time.
The code uses pick random operators for both x and y values.
That means its path changes each time the project runs.
Instead of looking perfectly mechanical, the bat appears more unpredictable.
Randomness is useful in games and animations because it can make repeated behavior feel less repetitive.
Kids can experiment with the range.
A narrow random range keeps the bat in a small area.
A wider range lets it travel much farther.

Create a Dance Sequence
Ask kids to invent four movements.
For example:
- Move left.
- Turn.
- Jump.
- Change costume.
Then code those movements in that order.
Run the program.
Does the result look the way they expected?
If not, change the timing or order.
This is iterative design: build, test, observe, revise.
Turn Dance Moves into an Algorithm
A dance routine is really an algorithm.
An algorithm is a sequence of instructions used to perform a task.
Written as ordinary language, the algorithm might be:
Move right.
Turn clockwise.
Switch pose.
Move left.
Repeat four times.
Scratch turns those instructions into executable code.
Debug the Skeleton Dance
Animation gives kids plenty of opportunities to debug.
Try intentionally changing something.
Set a wait time much too long.
Reverse a turn direction.
Delete a loop.
Change a coordinate.
Remove a costume change.
Run the program again and ask:
What changed?
Debugging becomes easier when kids can immediately see how a change affects the animation.
Timing Bugs
Sometimes the code is logically correct but the animation still looks wrong.
One skeleton might move too early.
Music might begin too late.
A costume might change too slowly.
These are timing problems.
Fixing them often involves adjusting:
wait values,
sound behavior,
loop structure,
or when different scripts begin.
That teaches kids that debugging is not limited to fixing code that completely fails.
Sometimes we debug code because the result simply isn’t what we intended.
Create a Faster and Slower Dance
Duplicate the same dance routine.
In one version, use short wait times.
In the other, use longer waits.
Now compare them.
Which looks more energetic?
Which is easier to follow?
This becomes a simple experiment where the timing value is the variable.
Build a Repeating Dance Pattern
Dance also provides a natural connection to patterns.
Create:
A → B → A → B
For example:
turn right → turn left → turn right → turn left.
Then try:
A → A → B
or:
A → B → C.
Kids who completed our Candy Corn Coding Activity will recognize the same pattern thinking appearing in an entirely different type of program.
Give the Pumpkins Random Expressions
The pumpkins use another custom block called:
pumpkinFace
When the green flag is clicked, each pumpkin runs that custom block inside a forever loop.
The pumpkinFace block:
waits a random amount of time from 1 to 3 seconds,
switches to the happy pumpkin costume,
waits another random 1 to 3 seconds,
and then switches to the mad pumpkin costume.

Each pumpkin repeatedly changes expressions after a random one-to-three-second delay.Because the wait time is random, the pumpkins do not all change expressions at exactly the same moment.
That creates a much more natural-looking animated scene.
If every pumpkin changed from happy to mad at precisely the same time, the effect would feel synchronized and mechanical.
Random delays make each sprite behave a little differently even though they are running essentially the same code.
This is a great example of how randomness can create variety without requiring completely different programs for every sprite.
End the Entire Animation with a Broadcast
The project also uses a broadcast called:
end
When the main skeleton finishes its three dance repetitions, it broadcasts end.
Other sprites can listen for that message.
The pumpkins, for example, contain:
when I receive [end]
followed by:
stop all
That creates a shared ending signal for the project.
Instead of every sprite independently guessing when the animation should finish, one part of the program sends a message that tells the rest of the project:
The dance is over. Stop now.
This is another reason broadcasts are so useful in larger Scratch projects.
They let separate sprites coordinate events without being physically connected in the same script.
Remix the Skeleton Dance Party
Once kids understand how the original project works, open our finished Skeleton Dance Party on Scratch and click Remix.
Start by changing one element, then run the project and see what happens. Once that works, make another change.
Kids might:
- Change the dance moves
- Change the music
- Adjust the timing
- Add another skeleton
- Use different costumes
- Create a keyboard-controlled dance
- Change the backdrop
The goal is not simply to decorate the original project. Kids should be able to explain which code they changed and how that change affected the animation.
That process of changing, testing, observing, and revising is an important part of programming.

Open and Remix Skeleton Dance Party on Scratch →
Build a Keyboard-Controlled Dance
Assign different movements to different keys.
For example:
left arrow → move left
right arrow → move right
space → jump
up arrow → spin
Now the player becomes the choreographer.
This turns a programmed animation into a simple interactive project.
Make the Dance Interactive
Instead of making the skeleton dance immediately, change the trigger.
Try:
When this sprite clicked → dance
Now the player controls when the routine begins.
Or use:
When space key pressed → dance
Different event blocks can control the exact same animation.
Only the trigger changes.
Change the Backdrop
Scratch animation is not limited to characters.
Change the backdrop to transform the entire scene.
Kids can create: a haunted house, a graveyard, a Halloween party, a moonlit forest, or a completely ridiculous skeleton disco.
Scratch’s own animation materials encourage choosing a backdrop as part of building the animated scene.
Add Visual Effects
Scratch Looks blocks can modify a sprite’s appearance.
Experiment with effects such as: color, brightness, or ghost.
A skeleton could flash different colors while dancing.
The whole party could fade.
A ghostly character could become partially transparent.
These effects give kids another property they can animate over time.
Skeleton Dance Party Coding Challenge
After exploring the finished project, challenge kids to create their own Halloween dance animation.
The project should include a repeating movement, at least two sprites, a sound or piece of music, and more than one animation technique.
For an extra challenge, coordinate several sprites so something happens at the same time.
Older kids can also add user controls or broadcasts to make the dance interactive.
Questions to Ask While Kids Code
Ask questions that focus on the logic underneath the animation.
Which blocks create movement?
Which instructions repeat?
What controls the speed?
What happens if we remove the loop?
Are any scripts running at the same time?
How could we synchronize two dancers?
What event starts the animation?
How could we let the player control it?
Those questions turn a fun Halloween animation into a computer-science lesson.

What Kids Learn from Scratch Animation
The Skeleton Dance Party can reinforce: animation, sequencing, loops, timing, coordinates, events, parallel scripts, costumes, sound, patterns, algorithms, testing, and debugging.
More importantly, kids see how a larger animated scene can be created from many small pieces of code working together.
That idea carries directly into more complicated games, simulations, stories, and interactive projects.
Try More Halloween Scratch Coding Activities
If kids want to keep coding, try Scratch Witch Wardrobe to explore conditional statements and user input.
Then move to our Halloween Conditional Collisions project to experiment with sensing, sprite collisions, nested conditionals, and broadcasts.
We also have a Trick-or-Treat Candy Hunt Maze, which should be the next Scratch project we turn into a dedicated lesson.
All of these projects belong in our 31+ Halloween STEM Activities for Kids collection.
You Might Also Like
Scratch Witch Wardrobe Conditional Statements
Use IF/THEN logic, Boolean comparisons, and player input to help Glenda choose her Halloween wardrobe.

Halloween Conditional Collisions in Scratch
Use sensing blocks, collision detection, nested conditionals, and broadcast messages to make sprites react to each other.

Try Scratch Collision Detection →
Candy Corn Coding Activity
Practice sequences, loops, patterns, algorithms, and debugging away from the computer.

Try the Candy Corn Coding Activity →
There are plenty of serious ways to learn computer programming. Making skeletons dance is considerably more fun.

Meet Toni, the Maker Mom behind Our Family Code
Hey there, I’m Toni! I’m a software engineer and Maker Mom that finds my joy in unleashing my children’s curiosity by exploring STEAM concepts with my fantastic five!
When I’m not chasing toddlers or raising tweens, you can find me tearing things up and putting them back together over here at Our Family Code.
I am the owner and content creator of multiple educational websites designed to increase access to STEAM & STEM education with a focus on teaching computer science and coding to kids of all ages!













