Repository navigation
feat: finaliza controles, adiciona pausa e reinício da partida - #4
Conversation
ZeCarlos18
left a comment
There was a problem hiding this comment.
Testei a branch e as funcionalidades estão funcionando bem. Peço alterações porque o PR está em conflito com a main, que agora tem a peça fantasma (#2) e o cronômetro (#3), e a resolução precisa de alguns cuidados para não quebrar essas funcionalidades.
O que testei (Edge headless, sem erros no console)
- Movimento: setas e A/D/W/S movem e giram a peça.
- Espaço: faz a queda imediata (fixa a peça no fundo e soma +10).
- Pausa: P pausa e continua, e Enter também continua. Na pausa a peça não desce.
- Reinício com R: a confirmação congela o jogo. Cancelar com ESC ou com o botão volta ao estado anterior (em jogo ou pausado). Confirmar com Enter ou com o botão começa uma partida zerada.
- Limpeza de linhas: a reescrita do
removeLine()/removeLines()está correta. 2 linhas completas somam +200 e os blocos de cima descem. Ainda corrigiu um detalhe antigo: o loop original nunca verificava a linha do topo (y=0). - Telas pequenas: com os 8 controles, as telas inicial e de pausa cabem em 300px e 450px.
Precisa resolver: conflito com a main (5 trechos no inde.html)
KEY/CONTROLS: incluir a tecla da peça fantasma:G: 71noKEYe{ keys: ['G'], action: 'ligar / desligar sombra' }noCONTROLS.addEvents(): manter os dois lados, ou seja, os listeners demode-button/mode-options(cronômetro) e os deconfirm-restart-button/cancel-restart-button.keydown(): usar o seuswitchnovo, mas acrescentarcase KEY.G: toggleGhost(); handled = true; break;no blocoif (playing). Senão a tecla G da peça fantasma deixa de funcionar.lose(): manter as suas funçõesrequestRestart()/confirmRestart()/cancelRestart()e a assinaturafunction lose(timeout).⚠️ Se a resolução ficar comfunction lose(), o corpo da função continua usandotimeoute o jogo geraReferenceErrortoda vez que a partida termina.- Depois de
dropPiece(): manter olandingY()da peça fantasma e o seuremoveLine().
Depois de resolver, vale rodar o jogo e conferir: tecla G, modo Contra o Tempo até "Tempo esgotado!", R durante a contagem regressiva (o cronômetro fica parado na confirmação) e ESC → Game Over.
Precisa conferir depois do merge: layout em 300px
Simulei a tela inicial da main com os 9 controles (os 8 deste PR + G) e o seletor de modo do cronômetro. Em 300px, o título "TETRIS" fica cortado no topo e não dá para alcançá-lo com a rolagem, por causa do justify-content: center do .overlay, e ainda aparece uma barra de rolagem horizontal. Em 450px cabe. Algumas opções:
- trocar no
.overlayparajustify-content: safe center;; - ou deixar a lista de controles em duas colunas;
- ou esconder a lista de controles na tela inicial nos tamanhos menores.
Sugestões (não bloqueiam)
- Reformatação de código existente:
KEY,CONTROLS,keydown(),addEvents()eremoveLines()foram reformatados (alinhamento em colunas → uma instrução por linha). Isso aumenta muito o diff e os conflitos com as outras branches, e destoa do estilo do resto do arquivo. Se possível, mantenha o estilo original e mude só as linhas necessárias. hardDrop(): com a peça fantasma namain, dá para reaproveitar olandingY():current.y = landingY(); invalidate(); drop();.- Detalhes de formatação:
var restartWasPlaying/restartWasPausedestão com 8 espaços de indentação; o resto do bloco usa 4.- Há linhas em branco sobrando e uma linha só com espaços depois do
CONTROLS. - Os botões da
#restart-screenestão quebrados em várias linhas.
- Comentários perdidos:
// displayed on the start and pause screens,// prevent arrow keys from scrolling the pagee// 1: 100, 2: 200, 3: 400, 4: 800. Ajudam a entender o código; vale manter. - Mudança de comportamento do Espaço: antes pausava e iniciava a partida, agora faz a queda imediata (e só Enter inicia). Faz sentido e está documentado no PR. Só vale a equipe estar de acordo, porque muda o que foi definido no PR #1.
Descrição
Adiciona novos controles de teclado ao Tetris, permitindo utilizar as teclas A, D, W e S como alternativa às teclas direcionais. Também adiciona o comando de queda imediata da peça, pausa e retomada da partida e reinício com confirmação.
O objetivo é oferecer mais opções de controle ao jogador e tornar as ações durante a partida mais acessíveis.
O que mudou
Todas as alterações estão no
inde.html:Como testar
inde.htmlno navegador.Critérios de aceite
Observações
inde.html.feature/controls.feat: finaliza controles, adiciona pausa e reinício da partida.