0
Your Cart
0
Your Cart

⚽ Emoji Catch micro:bit Two-Player Game for Ages 11+

Turn arrays into action! Let your students; ‘choose’, ‘throw’, and ‘catch’ emojis wirelessly with the BBC micro:bit!

This guide is part of a three‑lesson sequence: Arrays → Radio → Emoji Catch. Each guide builds on the last and prepares students for the final two‑player game.

Teaching coding concepts often works best when students can immediately see and feel the results of their work. After completing the Introduction to Arrays and the introduction to micro:bit radio guides, Emoji Catch offers a lively way for learners aged 11+ to put their new knowledge into practice.

We’ve split this guide into two sections; Section one is the teacher specific information, and step two is for the pupils to work through. Decide how hands on/off you want to be with this exercise based on how well you know your class, and/or how well they completed the introductory tasks.

Emoji Catch is a two-player micro:bit game. This activity combines event handling, radio communication, and creative LED design into a playful challenge, where students “throw” and “catch” emojis between devices.

Note, 8+: If you have a class of younger students, 8+, you could perhaps pre-load micro:bits with the code and either use the emoji catch game to talk about communication, or just as a reward for completing an earlier task satisfactorily.

Teacher Information:

Learning goals

  • Event handling: Buttons and gesture inputs.
  • Data structures: Using lists to store emoji icons.
  • Wireless Connectivity: micro:bit radio messages.
  • Creativity: Designing custom 5×5 LED patterns.

What you need

  • 2 × micro:bit (with battery pack or USB power) per pair of students.
  • 2 × wearable straps suitable for micro:bit.
  • Computers with MakeCode.
  • Two identical radio group numbers set on both devices.

Safety note: Remind students to make gentle “throw” motions. No flinging arms near others or launching micro:bits.

Possible teaching flow

  1. Warm‑up: Show a simple emoji on a micro:bit and ask how a 5×5 picture might be stored. Briefly recap arrays and radio groups from the primers.
  2. Build the emoji set: Students design one or more emojis in the MakeCode image editor, save each to a variable, and add all emoji variables into an emojis array. Show the first emoji on start.
  3. Add navigation: Button A moves to the previous emoji, Button B moves to the next. Wrap around at the ends. Students test scrolling through their emoji list.
  4. Add the “throw” mechanic: On shake, send the current emoji index via radio and play a short confirmation tone. Students test sending between devices.
  5. Add the “catch” mechanic: On radio received number, show emojis[receivedNumber] and play a distinct “received” tone. Students test sending back and forth.
  6. Play the game: Player 1 chooses an emoji and “throws” it. Player 2 “catches” it and replies with their own. Encourage quick turn‑taking once they’re confident.
Extension idea: Add a score when receiving the ball; limit throws with a cooldown; randomise a “mystery emoji” to guess.

Troubleshooting

  • No emoji received: Check both micro:bits use the same radio group; confirm power and pairing.
  • Too sensitive shake: Encourage smaller wrist movements; optionally switch to “logo up” or “logo down” as alternative gestures.
  • Confusing images: Simplify patterns; ensure recognisable shapes with symmetry and clear eyes/mouth.
  • Classroom data collisions: Use different radio groups for different pairs.

MakeCode

This version uses images and indexes, works on both players (flash the same program to both). Change radio.setGroup(8) to any shared number for your class.

The Code

Follow the full series below: Emoji Catch
▶ Primer 1: Arrays 🔗 Intro to Arrays
▶ Primer 2: Radio 🔗 Intro to Radio
▶ Main Guide 📍 You are here

Student Guide – Emoji catch with the BBC micro:bit

The code we are going to create makes use of Arrays, a concept that can feel difficult at first, so we recommend that you work through the two primer guides first. Ensure that you are comfortable with variables, arrays, and radio groups on the micro:bit.

There is only one program to create, and once complete it is loaded onto both micro:bits in a group. In a classroom setting with several pairs of students, each pair must have their own radio group. This ensures you can run as many games simultaneously as are needed.

Emoji list

Here is a list of the emojis we are going to create, with a short explanation of what they mean in the context of your game. Each emoji is a 5×5 LED pattern. You can start with these and, if prompted by the teacher, come up with your own:

  • Smiley: happy mood
  • Sad face: not happy mood
  • Thinking: not sure, I’ll let you know
  • Heart: I love it
  • Snowflake: I’m feeling festive, or snowball fight!
  • Ball: simple catch game symbol

Visual reference (5×5)

Tip: Example micro:bit-style representations, these can be used as a reference:

Smiley

Sad face

Thinking

Heart

Snowflake

Ball

Setup steps

  1. Attach straps: Fix each micro:bit to a wrist strap. Check comfort and orientation.
  2. Open MakeCode: Go to the micro:bit MakeCode editor and create a new project.
  3. Set radio group: Choose a number (e.g., 1). Both devices must use the same group.
  4. Create emoji images: Define 5×5 images for each emoji and store them in a list.
  5. Button controls: Button A moves left, Button B moves right through the list; show the current emoji.
  6. Throw gesture: On shake, send the current emoji index using radio.
  7. Receive + beep: On receiving an index, display that emoji and play a short tone.
  8. Test: Try sending between devices. Get students to experiment with shaking amount required.

Emoji catch challenge

Fresh from your radio and arrays primers, turn this activity into a discovery game. Read each challenge, try it on your micro:bit, and jot down what you notice.

Emoji images

  • Design: Can you draw six emojis on the 5×5 grid that your friends will recognise?
  • Variety: Which set feels most distinct (Smiley, Sad, Thinking, Heart, Snowflake, Ball)? What would you swap?
  • Reuse: How will you store each emoji so you can show it later without redrawing?
Try it: Use Images → Create image to design your set. Save each image to a variable.

Emoji list

  • Collection: How do we keep all our emojis together so we can scroll through them?
  • Order: Does the order of emojis in the list change what “next” and “previous” do?
  • Naming: What’s a clear name for your emoji list so your code reads well?
Try it: Create an array called emojis and put your emoji variables inside.

Index (pointer)

  • Memory: If we want to remember which emoji we’re looking at, what variable could we use?
  • Start: Why might index = 0 be a sensible first value?
  • Bounds: What happens if index goes below 0 or above the last emoji?
Try it: Make an index variable and show emojis[index] at start.

Button A → previous emoji

  • Wrap: What should happen if you press A when you’re at the start of the list?
  • Feedback: How will you confirm the change (LEDs, short tone)?
  • Robustness: How can you prevent index going out of range?
Try it: On button A, decrease index. If it’s below 0, set it to the last position, then show emojis[index].

Button B → next emoji

  • Wrap: What should happen if you press B at the end of the list?
  • Pacing: Do you need a tiny delay to avoid accidental double-presses?
  • Clarity: What tone or icon tells you you’ve moved forward?
Try it: On button B, increase index. If it’s past the last emoji, set it to 0, then show emojis[index].

Shake → send emoji

  • Message: How could we “throw” our emoji to a friend’s micro:bit—what number should we send?
  • Confirm: What sound or symbol tells you the send happened?
  • Collisions: If two people shake at once, what might happen on radio?
Try it: On shake, send the current index via radio and play a short beep.

Radio → receive emoji

  • Lookup: When your micro:bit hears a number, how does it know which emoji to show?
  • Safety: What should you do if the received number isn’t a valid index?
  • Signal: What feedback tells you a message was received (longer beep, icon)?
Try it: On radio received number, show emojis[receivedNumber]. Add bounds checks and a distinct “received” tone.

A+B → clear screen

  • Reset: Why might you want to wipe the slate clean between rounds?
  • State: Should clearing the screen also change index or leave it as-is?
  • UX: What signal tells players it’s a reset moment?
Try it: On A+B, clear LEDs. Optionally show a small dot or play a reset tone.

Radio group (channel)

  • Channel: Why do both micro:bits need to be on the same group number?
  • Teams: How could different groups create separate “teams” that don’t mix messages?
  • Troubleshoot: If you don’t receive anything, what’s the first setting to check?
Try it: Set the same radio set group on all devices that should talk.

Show initial emoji

  • First impression: What should appear at the very start so the screen isn’t blank?
  • Expectation: How does showing emojis[0] help users understand what to do?
  • Consistency: Should the start image match the current index?
Try it: In on start, set index = 0 and show emojis[index].

What will you get out of it?

  • Event handling: Buttons and shake gestures show how computers react to inputs.
  • Lists: You’ll store and scroll through multiple items using arrays.
  • Wireless communication: Radio blocks demonstrate how devices “talk.”
  • Creativity: Design and share your own emoji set.
  • Playfulness: It’s a game of catch, with pictures instead of balls.

Once you’ve completed the exercise, have a think about what you’ve learned and how else you might apply this knowledge in other programs. See if your working partner had similar experiences. The teacher may ask you questions on this, if there’s time.

Follow the full series below: Emoji Catch
▶ Primer 1: Arrays 🔗 Intro to Arrays
▶ Primer 2: Radio 🔗 Intro to Radio
▶ Main Guide 📍 You are here
SHARE:

Leave a Reply

Your email address will not be published. Required fields are marked *