If you're seeing this message, it means we're having trouble loading external resources on our website.

Se você está atrás de um filtro da Web, certifique-se que os domínios *.kastatic.org e *.kasandbox.org estão desbloqueados.

Conteúdo principal

Jogo da memória: pontuando e vencendo

Nosso "Jogo da Memória" está quase completo! Só falta uma coisa: o placar. Abaixo temos a parte das regras do jogo que fala sobre isso:
O objetivo do jogo é fazer com que todas as peças fiquem com a face virada para cima (isto é, encontrar todos os pares) no menor número de tentativas. Isso significa que, quanto menor o número de tentativas, melhor a pontuação.
Como fazemos para contar o número de tentativas? Bem, uma "tentativa" se dá cada vez que você vira duas peças, o que corresponde ao nosso if que verifica se flippedTiles.length === 2. Podemos adicionar uma nova variável global, numTries, que pode ser incrementada dentro desse if.
if (flippedTiles.length === 2) {
  numTries++;
  ...
}
Nós queremos mostrar o placar quando o jogo termina - quando o jogador encontrou todos os pares. Como verificamos isso? Eu consigo pensar em duas maneiras:
  1. Nós iteramos nossa matriz de peças e verificamos se isMatch é verdadeiro para todas elas.
  2. Nós usamos uma variável global para manter o controle de quantos pares o jogador encontrou e então verificamos se foram encontrados o número total de pares possíveis.
Nós fizemos um debate similar antes e eu segui com a opção na qual nós não precisávamos iterar em toda a matriz a todo momento. Vamos seguir este caminho novamente, opção 2.
Primeiro, inicializamos numMatches em 0, no mesmo lugar em que inicializamos todas as nossas outras variáveis de estado globais:
var numMatches = 0;
Então, dentro do bloco if para os pares encontrados, incrementamos a variável numMatches:
if (flippedTiles[0].face === flippedTiles[1].face) {
  flippedTiles[0].isMatch = true;
  flippedTiles[1].isMatch = true;
  flippedTiles.length = 0;
  numMatches++;
}
No final da nossa função draw, verificamos se o jogador encontrou todos os pares e então mostramos uma mensagem de parabéns para o usuário:
if (numMatches === tiles.length/2) {
  fill(0, 0, 0);
  text("Você encontrou todos os pares em " + numTries + " tentativas",
       20, 360);
}
Agora você pode testar nosso jogo, mas você deve levar algum tempo para ganhar o jogo (sem ofensa, é claro, eu também levo um tempo para conseguir!).
Uma dica para sempre que você estiver testando uma parte do seu jogo que é difícil de conseguir - modifique seu jogo temporariamente de forma que seja mais rápido finalizar. Por exemplo, nesse jogo, modifique NUM_ROWS e NUM_COLS para números menores, e você será capaz de terminar muito mais rápido. Agora, tente isso abaixo!

Quer participar da conversa?

Você entende inglês? Clique aqui para ver mais debates na versão em inglês do site da Khan Academy.