Módulo 1 · Aula 1.2 · Eventos e mensagens
| Carga horária | Dificuldade | Ferramenta | Competências |
|---|---|---|---|
| 8 h/a | ⭐⭐ | Scratch | C1, C2 |
Objetivos de aprendizagem
- Explicar o que é um evento e citar cinco eventos do Scratch.
- Usar "transmita" e "quando eu receber" para um ator avisar os outros.
- Usar "espere até que" para esperar uma condição.
Pré-requisitos
Aula 1.1.
Materiais
Computador; projeto 1-2-largada.sb3 (para o professor).
Conceitos
- Evento: algo que acontece e dispara um roteiro (bandeira clicada, tecla apertada, ator clicado, mensagem recebida).
- Mensagem: um aviso que um ator manda para todos os atores ao mesmo tempo. Quem tiver "quando eu receber [aquela mensagem]" começa a agir. É como o apito do juiz: todos os jogadores escutam.
- "transmita [mensagem]": envia a mensagem e segue em frente sem esperar.
- "transmita [mensagem] e espere": envia e só continua depois que todos que receberam terminarem.
- "espere até que < >": para o roteiro até a condição ficar verdadeira.
- Paralelismo: dois atores com "quando eu receber [largada]" correm ao mesmo tempo.
Exemplos
- Em um jogo de luta, quando a vida chega a zero, o personagem transmite "fim de luta" e o placar, a música e o cenário reagem.
- Em uma corrida, o juiz transmite "largada" e todos os carros saem juntos.
Tutorial passo a passo
Parte A. Os atores (30 min)
- Projeto novo, salvo como
largada-v1.sb3. - Renomeie o gato para Gato (tamanho 50).
- Adicione da biblioteca (Selecione um Ator): Hedgehog (renomeie para Ouriço, tamanho 50) e Robot (renomeie para Juiz, tamanho 60).
- Crie a variável
vencedor(Variáveis > Criar uma Variável, para todos os atores).
Parte B. O juiz (60 min)
- No Juiz, monte o roteiro do juiz (código abaixo).
- Para criar a mensagem: arraste "transmita [mensagem 1]", clique na setinha e escolha Nova mensagem. Digite
largadae clique em OK. - O bloco "espere até que" fica em Controle; o "não < >" e o "( ) = ( )" em Operadores.
Parte C. Os corredores (60 min)
- No Gato, monte os dois roteiros do corredor (código abaixo). Repare: o segundo roteiro começa com "quando eu receber [largada]" (em Eventos).
- Para não montar tudo de novo no Ouriço: arraste os dois roteiros do Gato até a miniatura do Ouriço na lista de atores e solte. O Scratch copia os blocos.
- No Ouriço, troque o y do "vá para" para -120 e o texto "Gato" do "mude vencedor para" por Ouriço.
- Rode várias vezes. O vencedor muda, porque cada passo é sorteado.
O código completo
Ator Juiz:
quando ⚑ for clicado
mude [vencedor] para (ninguém)
espere (0.5) seg
diga (3) por (1) segundos
diga (2) por (1) segundos
diga (1) por (1) segundos
diga (Já!)
transmita [largada]
espere até que <não <(vencedor) = (ninguém)>>
diga (junte (Vencedor: ) com (vencedor))Ator Gato (o Ouriço é igual, com y = -120 e o nome Ouriço):
quando ⚑ for clicado
vá para x: (-200) y: (-20)
quando eu receber [largada]
repita até que <(posição x) > (200)>
adicione (número aleatório entre (1) e (10)) a x
fim
se <(vencedor) = (ninguém)> então
mude [vencedor] para (Gato)
diga (Ganhei!) por (2) segundos
fimProjeto pronto: ../projetos/1-2-largada/1-2-largada.sb3.
Explicação do código
| Parte | O que faz |
|---|---|
| mude vencedor para ninguém | prepara a corrida. "ninguém" significa "ainda não chegou ninguém" |
| espere 0.5 seg | dá tempo de os corredores voltarem para a largada |
| transmita largada | o apito: os dois corredores começam juntos |
| espere até que não (vencedor = ninguém) | o juiz fica parado até alguém chegar |
| repita até que posição x > 200 | o corredor anda até passar da linha de chegada |
| se vencedor = ninguém | só o primeiro a chegar grava o nome. O segundo encontra o nome já preenchido e não muda nada |
Resultado esperado
O juiz conta 3, 2, 1, diz "Já!", os dois saem juntos com velocidades que variam, o primeiro a passar de x = 200 diz "Ganhei!" e o juiz anuncia "Vencedor: Gato" ou "Vencedor: Ouriço". Testado: ninguém sai antes do "Já!", o vencedor é sempre um dos dois e os dois cruzam a linha.
Problemas comuns
| Sintoma | Causa | Solução |
|---|---|---|
| Os corredores saem antes do "Já!" | usaram "quando ⚑ for clicado" no roteiro da corrida | trocar por "quando eu receber [largada]" |
| Só um corredor anda | o outro está esperando outra mensagem (nome diferente) | conferir que os dois usam largada |
| O vencedor anunciado é o segundo | falta o "se vencedor = ninguém" | o segundo sobrescreve o nome do primeiro |
| O juiz anuncia na hora, antes de alguém chegar | falta o "não" em volta do "=" | conferir "espere até que <não <(vencedor) = (ninguém)>>" |
| O juiz não anuncia nunca | o texto "ninguém" está escrito diferente nos blocos (ex.: "ninguem" sem acento) | usar exatamente o mesmo texto. O "=" do Scratch ignora maiúsculas, mas não ignora acentos nem espaços |
Exercício guiado
Acrescente um terceiro corredor (o Papagaio, Parrot) usando a técnica de arrastar os roteiros para a miniatura.
Desafio individual
Quando o juiz anunciar o vencedor, ele deve transmitir a mensagem pódio. Ao receber pódio, o vencedor dá um pulo (dica: "adicione 30 a y", "espere 0.2", "adicione -30 a y"). Só o vencedor! Dica: dentro de "quando eu receber [pódio]", use "se vencedor = Gato".
Desafio avançado (opcional)
Crie um semáforo com um ator de três fantasias (vermelho, amarelo, verde) desenhadas na aba Fantasias. O semáforo troca de cor sozinho e transmite largada só quando fica verde.
Critérios de avaliação
- Corredores só saem com a mensagem.
- O vencedor anunciado é sempre o primeiro a chegar.
- O aluno explica a diferença entre "transmita" e "transmita e espere".
Checklist de conclusão
Extensão
Liste 5 situações de um jogo que você conhece em que um personagem "avisa" os outros (mensagem). Quem transmite e quem recebe?