Learning Goals 3 min
By the end of this lesson you will be able to:
- Use
say [Hello!]— the version with no timer — and explain how it differs from the timed one. - Change what a sprite says by typing in the block.
- Clear a speech bubble deliberately, using an empty say block.
Warm-Up 7 min
New arc, new project. Start a fresh Scratch project and choose the Room 1 backdrop — this is where the cartoon will live. Your cat can move and dance, but it has never really talked. Everything it has said so far vanished after a couple of seconds.
Quick-fire puzzle
Priya built these two scripts on two different sprites. Both ran. Ten seconds later, only one bubble was still on screen. Which one, and why?
when flag clicked
say [I am the cat!] for (2) seconds
when flag clicked
say [I am Abby!]
Reveal the answer
Abby’s bubble is still there. The timed block puts a bubble up, waits two seconds, then takes it down again. The plain one puts a bubble up and simply leaves it.
That difference is the whole lesson. One is for a line of dialogue; the other is for a label that has to stay put.
New Concept — the say block without a timer 15 min
Think of the two say blocks as two ways of speaking. One is saying something out loud — it happens, then it is over. The other is holding up a sign, and the sign stays up until you take it down.
Blocks reference
| Block | Category | What it does |
|---|---|---|
say [Hello!] | Looks | Shows a speech bubble and moves straight on. The bubble stays until something else changes it. |
say [Hello!] for (2) seconds | Looks | Shows the bubble, holds the script for that long, then removes it automatically. |
The difference that matters
The timed block does two jobs at once: it shows a bubble and it pauses the script. The plain block does only the first. Your script races on to the next block immediately, while the bubble sits there.
That is why, back in Lesson 18, three plain say blocks in a row showed you only the last one. Each bubble replaced the one before it, far too fast to read.
Clearing a bubble on purpose
So how do you get rid of one? You say nothing. A say block with an empty text box replaces the old bubble with no bubble at all.
when flag clicked
say [I am thinking...]
wait (3) seconds
say []
Notice what this gives you that the timed block does not: the cat can keep talking while other things happen. The bubble stays up during the moving, the turning, the waiting.
Why it matters
A comic strip is characters with words next to them, held still long enough to read. Labels on a game screen work the same way. Any time text needs to persist rather than flash past, this is the block you want.
Worked Example — the cat holds a conversation 15 min
We use a bubble that stays, so the cat can talk and move at the same time — something the timed block cannot do.
Step 1 — Try the timed version first
Build a timed say followed by a move, and run it. The cat speaks, the bubble disappears, and only then does it start walking. Speech and movement take turns.
when flag clicked
say [I'm coming over!] for (2) seconds
glide (2) secs to x: (100) y: (0)
Step 2 — Swap in the plain say
Find say [Hello!] — the shorter block, just below the timed one in Looks — and replace the timed block with it.
when flag clicked
say [I'm coming over!]
glide (2) secs to x: (100) y: (0)
Step 3 — Watch the difference
Run it. The bubble appears instantly and stays put while the cat glides across the room. The cat is talking and walking, which is what a cartoon character actually does.
Step 4 — Notice the bubble will not go away
The glide finishes, the script ends, and the bubble is still there. Click the stop sign — still there. This is the plain block’s one drawback, and you have to handle it yourself.
Step 5 — Clear it
Add an empty say block at the bottom. Drag it in, then delete the word inside the text box so it holds nothing at all.
when flag clicked
say [I'm coming over!]
glide (2) secs to x: (100) y: (0)
say [Hi Abby!]
wait (2) seconds
say []
Step 6 — Read the shape of it
Look at what you have built. The bubble changes three times — first line, second line, then nothing — and you decided every one of those moments. That is dialogue rather than announcements.
What changed: speech has stopped being a thing that interrupts your script and become a thing that runs alongside it.
The full assembled stack (your reference)
when flag clicked
say [I'm coming over!]
glide (2) secs to x: (100) y: (0)
say [Hi Abby!]
wait (2) seconds
say []
Try It Yourself — three small builds 12 min
Goal: Give the cat a label that never goes away. Run it, then click the stop sign and confirm the bubble is still there.
when flag clicked
say [Selamat pagi!]
Think: two blocks and the bubble outlives the script. Now add a second plain say underneath and run again — you will only ever see the second one.
Goal: Make the cat count while it walks — a bubble that changes three times during a single journey across the room.
when flag clicked
go to x: (-160) y: (0)
say [1]
glide (1) secs to x: (0) y: (0)
say [2]
glide (1) secs to x: (160) y: (0)
say [3]
Think: the glides supply all the timing, so no wait blocks are needed at all. Each plain say replaces the last one at exactly the right moment.
Mini-mission: a two-sprite conversation. Make the cat and Abby take turns speaking, so it reads like a real exchange rather than two sprites talking over each other.
It works if: the two sprites speak in turn with a readable gap between them, and no bubble is left hanging when the exchange ends. Keep each stack under 8 blocks.
Think: both scripts start on the same flag click, so how does Abby know to wait? You already have a block that does exactly this job.
Mini-Challenge — the comic strip 5 min
“Three panels, one click”
Build a three-panel comic strip. In each panel the cat stands somewhere different and says something different, and every line stays up long enough to read comfortably.
It works if:
- One flag click plays the whole strip.
- The cat is in a visibly different place for each of the three lines.
- Every line stays up long enough to read without rushing.
- No bubble is left on screen at the end.
Reveal one valid solution (teacher)
when flag clicked
go to x: (-160) y: (0)
say [Where is everyone?]
wait (2) seconds
go to x: (0) y: (0)
say [Maybe over here...]
wait (2) seconds
say []
Eight blocks gets you two panels plus the clear-up, which forces a decision about the third. Pupils usually solve it by using timed say blocks instead — a good moment to point out that the timed block is two blocks in one.
Recap 2 min
There are two say blocks and the difference is the timer. The timed one shows a bubble, holds the script, then clears up after itself. The plain one shows a bubble and moves straight on, leaving it up until something else changes it — which lets a sprite talk and move at the same time, and makes clearing up your job. An empty say block is how you do that.
- say (block, no timer)
- Shows a speech bubble and moves on immediately. The bubble stays until something replaces it.
- say for seconds
- Shows a bubble, pauses the script, then removes the bubble automatically.
- Empty say
- A say block with nothing in its text box. Clears whatever bubble is showing.
- Speech bubble
- The white shape beside a sprite. Each sprite has its own, independent of the others.
Homework 1 min
The tour guide. Build a cat that walks around the room describing what it sees, without ever stopping to talk.
- Send the cat to three different spots in the room.
- At each one, use a plain say block so the bubble stays while it travels to the next.
- Clear the final bubble with an empty say block.
- Screenshot your Script Area.
when flag clicked
go to x: (-160) y: (0)
say [Here is the window.]
glide (2) secs to x: (0) y: (0)
say [Here is the table.]
glide (2) secs to x: (160) y: (0)
say [And here is the door.]
Bring back next class:
- A screenshot of your script.
- Your answer to: “Why would this homework be impossible using only the timed say block?”
Heads up for next class: SCR-L01-24 looks properly at say [Hello!] for (2) seconds — the version that cleans up after itself, and why timing dialogue is harder than it sounds.