Conteúdo principal
Programação
Curso: Programação > Unidade 4
Lição 5: Programando um Jogo da MemóriaJogo 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:
- Nós iteramos nossa matriz de peças e verificamos se
isMatch
éverdadeiro
para todas elas. - 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?
- Teria como me enviar esse codigo fonte funcionand para eu aprender(1 voto)