Repository navigation
feat: cronômetro com modo Contra o Tempo - #3
Merged
Hidden character warning
The head ref may contain hidden characters: "feature/cron\u00f4metro-modo-tempo"
Merged
Conversation
Mostra o tempo da partida no menu lateral (mm:ss). O cronômetro só conta enquanto a partida está em andamento, para na pausa e reinicia em 00:00 a cada nova partida. O DOM só é atualizado quando o segundo exibido muda.
A tela inicial passa a ter as opções Padrão e Contra o tempo e um seletor de tempo limite (1, 2, 3 ou 5 minutos), habilitado só no modo Contra o Tempo. No modo Contra o Tempo o cronômetro faz contagem regressiva a partir do tempo limite. A tela de fim ganha o botão Trocar modo, que volta para a tela inicial; Jogar novamente repete o mesmo modo e tempo.
…ntra o Tempo Centraliza o cálculo de step em updateStep(). No modo Padrão a fórmula é exatamente a de antes (acelera só com as linhas completadas). No modo Contra o Tempo a partida começa na velocidade normal e chega à velocidade máxima (0,1 s por linha) quando o tempo acaba, recalculando a cada frame.
No modo Contra o Tempo, quando o cronômetro chega em 00:00 a partida termina reaproveitando lose(), e a tela de fim mostra "Tempo esgotado!". Derrota por empilhar peças ou ESC continua mostrando "Game Over", em qualquer modo. A tela de fim também passa a mostrar o tempo jogado.
O cronômetro segue o mesmo estilo de score e rows. As opções de modo e o seletor de tempo limite ficam compactos para caber no menor tamanho de tela, e o botão Trocar modo usa um estilo secundário (contorno).
ZeCarlos18
requested review from
Caique-Souza1,
Reullyson,
Teogenes18 and
deniselmatos
October 11, 2026 13:52
Merged
Caique-Souza1
approved these changes
Oct 11, 2026
Caique-Souza1
left a comment
Collaborator
There was a problem hiding this comment.
** Revisão concluída e aprovada **
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Descrição
Adiciona um cronômetro visível durante a partida e um novo modo de jogo, o Contra o Tempo.
00:00.O objetivo é dar ao jogador noção do tempo de partida e oferecer um modo mais desafiador, com pressão de tempo e dificuldade crescente.
O que mudou
Tudo está no
inde.html:tempo 00:00abaixo de "rows", com o mesmo estilo de score e rows. Segue o padrão de invalidação que já existia (invalidateTimer()/drawTimer()), e o DOM só é atualizado quando o segundo exibido muda.idtdoupdate()apenas enquanto a partida está em andamento. Por isso para sozinho na pausa e nas telas de início e fim, e zera noreset().play().stepfoi centralizado emupdateStep(). No Padrão a fórmula é exatamente a de antes. No Contra o Tempo a partida começa na velocidade normal e chega a 0,1 s por linha quando o tempo acaba, cerca de 6x mais rápido.00:00a partida termina reaproveitandolose(), e o título da tela de fim muda para "Tempo esgotado!". Empilhar peças ou apertar ESC continua mostrando "Game Over", em qualquer modo.Nenhuma tecla nova foi criada. Enter, Espaço, setas e ESC funcionam como antes.
Como testar
inde.htmlno navegador (ou rodarscript/test).00:00e conta. Apertar Espaço para pausar: o tempo para. Apertar Espaço de novo: o tempo volta a contar. Apertar ESC: aparece "Game Over" com o tempo jogado. "Jogar novamente" reinicia em00:00.01:00e conta para trás. As peças aceleram visivelmente perto do fim. Em00:00aparece "Tempo esgotado!" com a pontuação final.Critérios de aceite
Validei com testes automatizados no navegador (Edge headless), sem erros no console, e com prints em 300px, 450px e 1000px.
Observações
Conflito com
feature/peca-fantasma(PR Feature/peca fantasma #2): é intencional. A atividade pede que a equipe passe por um conflito de PR. Por isso, parte do código do cronômetro foi colocada nos mesmos pontos onde a peça fantasma também insere código. Quando um dos dois PRs entrar namain, o outro vai conflitar em 2 trechos doinde.html:lose(): a seçãoCRONÔMETRO / MODO CONTRA O TEMPOe ovar ghost/toggleGhost().drawRows():drawTimer()edrawGhost().Como resolver: manter os dois lados nos dois trechos, já que não há lógica sobreposta. Nos demais pontos o merge é automático (
KEY,CONTROLS,keydown()edrawCourt()não foram alterados aqui). Se o PR Feature/peca fantasma #2 entrar primeiro, façogit merge origin/mainnesta branch, resolvo mantendo a tecla G e a sombra junto com o cronômetro, e testo de novo.Aba em segundo plano: o
requestAnimationFramepara, e o cronômetro congela junto com o jogo. É o mesmo comportamento do resto do jogo.Decisões técnicas:
elapsed, e não adt. Adttem o comentário "time since starting this game", mas na verdade é o acumulador da queda da peça.lose()ganhou um parâmetro opcional (lose(true)= tempo esgotado). As chamadas existentes continuam iguais.