Capítulo 4 — O que é uma variável, de verdade
baixar projeto .sb3 (início deste capítulo)Contexto
Até o Capítulo 3, comer um pontinho só fazia ele sumir — nada era contado, e o jogo não tinha como saber quando tinha acabado. Este capítulo é dedicado a um conceito só, com calma: o que é uma variável.
💡 Dica: uma variável é uma caixinha com um número dentro, com um nome escrito nela. Qualquer script pode olhar o que tem dentro, somar, diminuir, ou trocar completamente o número — o Scratch não liga pra quem mexeu ou quando, só guarda o valor atual.
Este capítulo cria a variável Pontos.
O que construímos
1. Zerar a variável no início do jogo
No sprite pontos, antes de montar a grade de clones (o que já existia da Aula 2), adicionamos uma linha:
Quando a bandeira verde for clicada
Defina [Pontos] para (0)
Mostre
Vá para x: (-220) y: (-160)
Repita (17) vezes
...
Esconda
Transmita [Jogo Pronto]
💡 Dica: por que zerar
Pontoslogo no início, se ele já começa em 0? Porque se o jogador clicar na bandeira verde de novo pra jogar outra partida,Pontospode ter ficado com o valor da partida anterior. Zerar aqui garante que toda partida nova começa do mesmo jeito.
2. Pontos sobe e desce no mesmo capítulo
Em vez de só contar pontinhos comidos, a mesma variável serve pra duas coisas diferentes, uma depois da outra:
Quando eu começar como um clone
mude [Pontos] por (1)
Se <tocando na cor [preto]?> ou <tocando na cor [roxo]?> então
mude [Pontos] por (-1)
Apague este clone
Espere até <tocando em [pacman]?>
mude [Pontos] por (-1)
Apague este clone
💡 Dica — por que somar 1 logo de cara, se o pontinho pode estar em cima de uma parede? Cada clone, assim que nasce, soma 1 em
Pontos— mesmo os que vão morrer em cima de uma parede. Se ele estiver numa parede, a gente desfaz isso na mesma hora (-1) e apaga o clone. No fim, depois que a grade inteira termina de nascer,Pontosfica exatamente com a quantidade de pontinhos que sobreviveram — os que estão nos corredores. A partir daí, toda vez que o Pac-Man come um pontinho,Pontosdesce 1.
Ou seja: Pontos sobe enquanto o labirinto está sendo montado, e desce enquanto o jogo está sendo jogado. É a mesma variável, fazendo dois trabalhos diferentes em momentos diferentes — o número não "sabe" que mudou de função, só o código decide o que fazer com ele a cada momento.
3. Usar Pontos para saber quando o jogo termina
Se Pontos conta quantos pontinhos ainda faltam, então Pontos chegando a zero significa que o jogador comeu todos. Dois sprites passaram a checar isso:
No pacman:
Quando a bandeira verde for clicada
Espere até <(Pontos) = (0)>
Pare [tudo]
Na tela:
Quando eu receber [Jogo Pronto]
Mostre
Espere até <tecla [espaço] pressionada?>
Esconda
Espere até <(Pontos) = (0)>
Mude para a fantasia [fim]
Mostre
💡 Dica: repara que ninguém "avisa" o pacman ou a tela que o jogo acabou — os dois ficam de olho em
Pontospor conta própria, o tempo todo, esperando ele chegar a zero. É uma forma diferente de "saber que algo aconteceu" do que usar mensagens (Aula 3): em vez de alguém transmitir um aviso, cada script fica checando o valor sozinho.
Checklist do capítulo
- Dá pra explicar com as próprias palavras o que é uma variável
- Ficou claro por que
Pontossobe durante a criação da grade e desce durante o jogo - O placar de
Pontosaparece visível na tela durante o jogo - O jogo para sozinho quando todos os pontinhos são comidos
O que ainda não existe nessa etapa
- Ainda não existe nenhum fantasma — o "Fim de Jogo" (perder) ainda não é transmitido por ninguém, só o "vencer" (Pontos chegando a zero) funciona por enquanto
- Não existe ainda uma fantasia separada de "vitória" — o jogo reaproveita a mesma fantasia
fimtanto pra ganhar quanto (no futuro) pra perder