Today we're going to reveal how to make a basketball game on Scratch! In this tutorial, we will show you how to animate a simple basketball game by utilizing commonly used blocks such as the ones from motion and looks category. The key to this short game is coordination and timing. Every sprite has at least one task and the sequence of when and how these tasks are performed is important.

For the most part, our “wait () seconds” block will take care of the timing part for custom switching and ball passing. The “go to x and y” block should take care of the ball’s whereabouts, and different “switch custom to” block will take care of the overall appearance, gesture, and body language of our humans sprites. And just like in a real basketball game, strategizing the next move is crucial. Hence “broadcast message” and “when I receive message” blocks will help determine whose turn it is to perform.

If you enjoy creating games in Scratch, be sure to check out our live, online, award-winning Scratch coding for kids classes and our game building class for kids - designed by experts from Google, Stanford, and MIT. There's no risk in trying with our free intro session!

See how to make a basketball game on Scratch in simple steps

Scratch for kids is great for making games. Here we'll walk you through 16 steps to making your own fun game.

Step 1: Select sprites and resize

Select the three sprites (Andie, Jamal, and Dorian) plus the ball sprite and manually set their size to 70% for the three players and 40% for the ball.


Step 2: Choose a backdrop

In the Backdrops library under Sports choose the Basketball 2 backdrop.

Step 3: Customize the sprites – delete ball

In the custom tab for each player sprite, remove the ball from their customs. We will use our ball sprite instead. To remove the ball simply click on it and press the backspace key or click on the trash bin icon to delete it.

Step 4: Customize sprites – duplicate and edit

Duplicate Dorian’s custom by selecting dorian-c by right clicking and selecting “duplicate” from the options. Then move his arms up so that we can later use that particular custom to animate his excitement once the team scores. To rotate the arm, click on it, and look for the curved double arrow.

Step 5: Ball sprite’s initial location

We are ready to code. We will start with the ball sprite but first, click on dorian-a custom, and manually position the ball in Dorian’s hands. Then set the ball’s position (x and y points) to always be there when the green flag is clicked. We will also need the ball to stay there for about a second and a half before Dorian passes it to Andie.

Step 6: Ball’s next location

Switch Andie’s custom to andie-a, and manually position the ball to be in his right hand. Only then are we ready to program the ball to be passed (glide) from Dorian to Andie. We do this by changing the x and y points.

Build a basketball game with coding

Step 7: Make sprite Andie switch hands

The next step is to have Andie show off his skill by switching the ball from one hand to another. We will use the broadcast message block.

Switch hands

Step 8: Broadcast 1st message

Now we need to program Andie’s sprite to do two things: 1. switch the ball to his left hand and 2. Pass the ball to Jamal. This can be done as soon as Andie receives “message1” from the previous step. Furthermore, we will broadcast yet another message (Call it message2), which will trigger the ball to also go from being in Andie’s right hand to being in his left hand.

Step 9: Broadcast 2nd message

Go ahead and test your game. You will notice that Andie now has his left arm raised. This is what we wanted. Manually move the ball to his hand and change the x and y points to reflect that. All there is left to do after at this point is have Andie pass the ball to Jamal.

Step 10: Message2 – What to do

It is time for Jamal to catch the ball. Under Jamal’s customs, select jamal-a so that we can go ahead and position the ball to where his hands are. We will add a .5 second wait time as well as the glide block so that the ball can glide into Jamal’s hands. We also need to prep Jamal for the message2 – he will get into the catching position which is jamal-a custom.

Step 11: Message2, few more steps

Use jamal-c custom for ball throwing, however, edit his arms first. Make his arms appear closer to one another. We did this for Dorian in Step 4. Also, we need Jamal to switch to this custom at the right time, so we’ll add a wait block in between.

Step 12: Prep to score

We are once more going to add on to where we left off with the ball. In this step, we need to position the ball between Jamal’s hands and add another pause, and another “go to” block.

Prep to score

Step 13: The scoring steps

We are not done with the ball just yet but we are to the final steps of ball’s whereabouts. We need to make it look as Jamal is going for the hoop. Position the ball to the top of the basketball hoop, add the glide block, and then position the ball to the bottom of the hoop, and add another glide block. At that point, we need to broadcast another message which will trigger all three player sprites to celebrate by throwing their arms in the air and jumping up and down.

Step 14: Prep to animate excitement

Jamal, Dorian, and Andie will all switch customs when they receive message 3 but Jamal and Dorian will appear if they are jumping up and down. For this, we will use the same concept as we did for the ball – we will manually move the sprites up and down to get the x and y positions in our glide block.

The only thing that should be different is the amount of time the customs will glide for. One second is too long and we want to make the jumping appeal a little more realistic. We will repeat this process for 10 times for both Jamal and Dorian.

Step 15: Keeping customs in line

Test your game. What do we notice? It seems as the last steps of the custom switch stayed there doesn’t it? Which sort of throws off how our sprites behave when we want to see them pass the ball etc. It just does not seem right. This is an easy fix. For each sprite we will use the “when the green flag is clicked” to assign their appropriate customs for a smoother transition.

Step 16: Broadcast 3rd and final message

We need to adjust the customs as each sprite receive the broadcast message. Do this for all sprites under each broadcasted message.

Step 17: Add score variable

All there is missing is the score. Click on Variables, and then click on Make a Variable. Name it Score and leave the radio button checked off for all sprites.

Step 18: Program score using condition and operators

Add two points when the ball lands on the floor. That is the last “glide” block we used for the ball. In our case, that was x=-81 and y=-144. Use the if/then conditional block as well as operation blocks ‘=’ and ‘and’.

Step 19: Reset score

As you test your game, you may have noticed that we keep adding to the score regardless of how many times we start the game over. This is an easy fix. All we need to do is set the score back to zero at the beginning of the game which would be when the green flag is clicked. You can do this under any sprite but we should stick with the ball since the score is added once the ball is on the ground. At this point, you are all set!

Reset score

The link to this game can be found here!

Make a basketball game on Scratch today

When it comes to animating your game on Scratch, the goal is to make everything look as “real” or as “alive” as possible. In this tutorial, we gave you an idea of how to do just that.

From editing and switching Sprite customs, to broadcasting and receiving messages, and even selecting precise x and y points for the ball to flock to, we have plenty of tools to make even a simple game seem sophisticated and catchy. All that’s needed is an idea and creativity.

Up next, see how to make a clicker game on Scratch or enjoy a free intro to Scratch coding class.

Written by Sandra Dizdarevic, a Create & Learn instructor with 6 years of experience teaching STEM to children in the 3rd through 11th grade. She has an Undergraduate as well as a Masters Degree in Management Information Systems from UNO.