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 Pontos logo no início, se ele já começa em 0? Porque se o jogador clicar na bandeira verde de novo pra jogar outra partida, Pontos pode 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, Pontos fica 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, Pontos desce 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 Pontos por 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 Pontos sobe durante a criação da grade e desce durante o jogo
  • O placar de Pontos aparece 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 fim tanto pra ganhar quanto (no futuro) pra perder
← Voltar para o Guia Pac-Man