Este é um componente React que implementa um mini-jogo de pontaria chamado "Aim Lab de Pobre". Ele usa os hooks
useState
, useEffect
e useRef
para gerenciar o estado do jogo e a
interação com o usuário.
O componente App
começa definindo 6 estados:
score
: mantém a pontuação atual do jogadortimeLeft
: mantém o tempo restante do jogadortargetPosition
: mantém a posição atual do alvo na telaisStarted
: indica se o jogo está em andamento ou nãoisFinished
: indica se o jogo terminou ou nãotimerIntervalRef
: é uma referência para o intervalo do temporizador que é criado mais tarde
O componente define três funções que manipulam os estados:
startExercise()
: define os estados iniciais do jogo e começa um novo jogostopExercise()
: para o temporizador e redefine o estadoisStarted
para falsehandleTargetClick()
: é chamada quando o jogador acerta o alvo. Ela atualiza a pontuação do jogador e redefine a posição do alvo.
O componente também usa o useEffect
hook para controlar o temporizador. Quando
isStarted
é true
e isFinished
é false
, o
useEffect
cria um novo intervalo de tempo que decrementa o timeLeft
a cada segundo.
Quando o tempo chega a zero, o intervalo é cancelado, isFinished
é definido como true
e o tempo restante é definido como zero.
O componente renderiza a interface do usuário com base nos estados atuais. Ele exibe:
- Um botão "Começar" se o jogo ainda não começou
- Uma contagem de pontos e tempo restante
- Um alvo que o jogador deve clicar para ganhar pontos
- Um botão "Parar" para interromper o jogo
- Um botão "Começar" para iniciar um novo jogo quando o jogo acabou
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais informações.