Today you are coding in MakeCode Arcade. You will build Donut Rush step by step at your device: a collection game with score and a countdown.
You can already work with sprites and simple events. Today you will put that together into a full timed game, then try a friend's version and compare design choices.
Before anyone runs anything: what do you think will happen when the player overlaps a donut, and what should happen when the countdown runs out?
Keep the start short so time stays on the build. Devices on MakeCode Arcade, students logged in. Optional predict: before anyone runs code, ask what should happen on donut overlap and when the countdown ends. Park a few answers to revisit in make sense. Work in pairs at devices; you model only the opening beats on the board.
Welcome to the 'Donut Rush' game creation lesson! In this exciting course, you'll learn how to create your very own interactive game using MakeCode Arcade. The game you'll be creating is called 'Donut Rush'. The goal of the game is to collect as many donuts as possible within a set time limit. You'll learn how to write code to create game sprites, handle events like sprite overlaps, and control the game logic. Let's get started!
Read the welcome aloud or let pairs skim it. Stress the goal in plain terms: collect donuts before the countdown ends, with score and levels. No coding yet. Check every pair has MakeCode Arcade open and is ready for a new project.
Start by creating a new project in MakeCode Arcade. To do this, go to the MakeCode Arcade website and click on 'New Project'.
Model New Project on the board once. Watch for students opening an old project by mistake. Pairs only move on when both can see a fresh empty workspace.
This studio shows code two ways. Most steps give the code as text, and a couple show it as a picture of the blocks. They are the same program. At the top of the MakeCode Arcade editor there is a toggle that says Blocks | JavaScript, and you can move between the two whenever you like. To type the text below, switch to JavaScript.
It is the same program either way. Flip back to Blocks whenever you like and you will see the code you typed as blocks, which is a good way to check you have it right. If a line will not go in, check the brackets and the capital letters, text is fussier than blocks.
Let's set up the game. We'll create a splash screen, set up some variables, and create our player sprite. The splash screen is the first screen that appears when the game starts. It's a great place to display the game's title or any instructions for the player.
The variables we're creating will be used to keep track of the game's state:
Add the following code:
let mySprite: Sprite = null
let collected = 0
let target = 0
let level = 0
game.splash("Collect the donuts!")
level = 1
target = 0
collected = 0
mySprite = sprites.create(img`
. . . . . . 5 . 5 . . . . . . .
. . . . . f 5 5 5 f f . . . . .
. . . . f 1 5 2 5 1 6 f . . . .
. . . f 1 6 6 6 6 6 1 6 f . . .
. . . f 6 6 f f f f 6 1 f . . .
. . . f 6 f f d d f f 6 f . . .
. . f 6 f d f d d f d f 6 f . .
. . f 6 f d 3 d d 3 d f 6 f . .
. . f 6 6 f d d d d f 6 6 f . .
. f 6 6 f 3 f f f f 3 f 6 6 f .
. . f f d 3 5 3 3 5 3 d f f . .
. . f d d f 3 5 5 3 f d d f . .
. . . f f 3 3 3 3 3 3 f f . . .
. . . f 3 3 5 3 3 5 3 3 f . . .
. . . f f f f f f f f f f . . .
. . . . . f f . . f f . . . . .
`, SpriteKind.Player)
controller.moveSprite(mySprite, 70, 70)
A function in programming is a reusable piece of code. It allows you to group several commands together, which can then be called upon whenever you need them. This helps to make your code more organised and efficient.
Create a function called startLevel.
function startLevel () {
}
Briefly name a function as a reusable chunk of code you can call whenever a level starts. Students create the empty startLevel function only. Differentiation: if a pair is stuck finding the function block, show it once on the board and move on.
You're previewing this lesson. Get full access to this lesson and hundreds more — each one ready to teach, with interactive activities, printable resources and pupil progress tracking built in.