Capítulo 3 — Conectando tudo com mensagens
baixar projeto .sb3 (início deste capítulo)Contexto
Depois do Capítulo 2, o jogo tinha um problema visível: assim que clicava na bandeira verde, o Pac-Man já saía andando, ao mesmo tempo em que os 391 pontinhos ainda estavam sendo criados na tela. Ficava tudo acontecendo ao mesmo tempo, sem ordem.
O conceito deste capítulo resolve exatamente isso: transmitir e receber mensagens.
💡 Dica: pensa numa mensagem como um aviso de rádio. Um sprite transmite um aviso (ex: "Jogo Pronto!") sem saber quem está ouvinho. Qualquer outro sprite pode receber esse aviso e decidir o que fazer quando ele chegar. Ninguém precisa saber o nome de quem transmitiu — só precisa saber qual aviso está esperando.
O que construímos
1. Os pontinhos avisam quando terminam
No sprite pontos, depois de montar a grade inteira (o que já existia da Aula 2), adicionamos uma linha no final:
Quando a bandeira verde for clicada
Mostre
Vá para x: (-220) y: (-160)
Repita (17) vezes
Repita (23) vezes
Crie um clone de [este ator]
Adicione (20) a x
Mude x para (-220)
Adicione (20) a y
Esconda
Transmita [Jogo Pronto]
2. O Pac-Man passa a esperar o aviso
O script de movimento do Pac-Man deixou de rodar direto na bandeira verde — agora ele só começa depois de receber "Jogo Pronto", e ainda espera o jogador apertar espaço:
Quando eu receber [Jogo Pronto]
Espere até <tecla [espaço] pressionada?>
Para sempre
Mova (20) passos
Se <tocando na cor [preto]?> ou <tocando na cor [roxo]?> então
Mova (-20) passos
Espere (0.1) segundos
O script que controla a direção do Pac-Man (setas/WASD, da Aula 1) não mudou — continua rodando desde a bandeira verde. Só o script que faz ele andar de verdade é que passou a esperar o aviso.
3. A tela reage às mensagens
O sprite tela ganhou vida nessa aula, com três scripts separados — cada um reagindo a um momento do jogo:
Quando a bandeira verde for clicada
Esconda
Mude para a fantasia [inicio]
Defina o efeito fantasma como (20)
Vá para a camada da frente
Quando eu receber [Jogo Pronto]
Mostre
Espere até <tecla [espaço] pressionada?>
Esconda
Quando eu receber [Fim de Jogo]
Mude para a fantasia [fim]
Mostre
💡 Dica: repara que três scripts diferentes reagem a três mensagens diferentes, cada um cuidando só da sua parte — nenhum precisa saber o que os outros fazem. É a mesma ideia de "cada um recebe o aviso que importa pra ele".
4. A Vitamina entra no jogo
Um novo sprite, posicionado nos 4 cantos do labirinto, com uma animação simples de piscar:
Quando a bandeira verde for clicada
Mostre
Vá para x: (-220) y: (-160)
Crie um clone de [este ator]
Vá para x: (220) y: (-160)
Crie um clone de [este ator]
Vá para x: (-220) y: (160)
Crie um clone de [este ator]
Vá para x: (220) y: (160)
Crie um clone de [este ator]
Esconda
Quando eu começar como um clone
Para sempre
Próxima fantasia
Espere (0.1) segundos
Quando eu começar como um clone
Espere até <tocando em [pacman]?>
Apague este clone
💡 Dica: repara que a Vitamina usa a mesma ideia de clones da Aula 2 (criar cópias em vez de desenhar 4 sprites separados), só que aqui em 4 posições fixas, em vez de uma grade inteira.
Checklist do capítulo
- O Pac-Man só começa a andar depois que os pontinhos terminam de aparecer e o jogador aperta espaço
- A tela inicial some sozinha assim que o jogo fica pronto e o espaço é pressionado
- Dá pra explicar a diferença entre "transmitir" e "receber" com as próprias palavras
- A Vitamina aparece piscando nos 4 cantos do labirinto e some ao ser tocada pelo Pac-Man
O que ainda não existe nessa etapa
- Ainda não existe nenhum fantasma no jogo
- A mensagem "Fim de Jogo" já é esperada pela tela, mas ainda ninguém a transmite — isso só vai fazer sentido quando os fantasmas entrarem
- Tocar na Vitamina só faz ela sumir — ainda não ativa nenhum poder especial (isso fica para quando os fantasmas existirem)
- A pontuação (variável
Pontos) ainda não existe — fica pra uma aula dedicada só a explicar o conceito de variável