Introdução
Neste projeto, você aprenderá como criar um jogo interativo de quebra-cabeça usando JavaScript. O jogo envolve reorganizar as peças do quebra-cabeça para reconstruir a imagem completa, proporcionando uma experiência envolvente e desafiadora para os jogadores.
👀 Pré-visualização

🎯 Tarefas
Neste projeto, você aprenderá:
- Como configurar o ambiente do projeto e entender a estrutura de arquivos.
- Como implementar a funcionalidade de arrastar e soltar (drag and drop) para as peças do quebra-cabeça.
- Como verificar a conclusão do quebra-cabeça e exibir uma mensagem de sucesso correspondente.
- Como testar o projeto concluído e garantir a funcionalidade correta do jogo.
🏆 Conquistas
Após concluir este projeto, você será capaz de:
- Criar um jogo interativo usando JavaScript.
- Entender os princípios da funcionalidade de arrastar e soltar (drag and drop) no desenvolvimento web.
- Implementar a lógica para verificar a conclusão de uma tarefa e fornecer feedback ao usuário.
- Ganhar experiência em trabalhar com o Document Object Model (DOM) e manipular elementos HTML.
Configurar o Ambiente do Projeto
Nesta etapa, você configurará o ambiente do projeto e entenderá a estrutura de arquivos.
Abra o ambiente de experimento e navegue até o diretório do projeto
/home/labex/project.A estrutura do diretório é a seguinte:
├── css ├── images ├── index.html └── js └── index.jsimagesé a pasta de imagens do projeto.cssé a pasta de estilos do projeto.index.htmlé a página principal.js/index.jsé o arquivo JavaScript onde você precisa adicionar o código.
Clique no botão Go Live no canto inferior direito do WebIDE para executar o projeto.
Abra "Web 8080" no topo da VM e atualize-o manualmente para ver a página.
Implementar a Funcionalidade de Arrastar e Soltar
Nesta etapa, você implementará a funcionalidade de arrastar e soltar (drag and drop) para as peças do quebra-cabeça.
No arquivo
js/index.js, localize a funçãodrop.Dentro da função
drop, adicione o seguinte código para trocar as imagens da peça do quebra-cabeça arrastada e da peça do quebra-cabeça alvo:// Check if the dragged puzzle piece is not the current target puzzle piece if (draggedPiece !== this) { // TODO // Save the current state of the dragged and target puzzle pieces let saveArr = [ [draggedPiece.children[0].src, draggedPiece.children[0].dataset.id], [this.children[0].src, this.children[0].dataset.id] ]; // Swap the src and data-id attributes of the images draggedPiece.children[0].src = saveArr[1][0]; draggedPiece.children[0].dataset.id = saveArr[1][1]; this.children[0].src = saveArr[0][0]; this.children[0].dataset.id = saveArr[0][1]; } // Reset the puzzle piece being dragged draggedPiece = null;Este código primeiro verifica se a peça do quebra-cabeça arrastada não é a peça do quebra-cabeça alvo atual. Se for o caso, ele salva o estado atual das peças do quebra-cabeça arrastada e alvo, e então troca os atributos
srcedata-iddas imagens.
Verificar a Conclusão do Puzzle
Nesta etapa, você implementará a lógica para verificar se o quebra-cabeça foi concluído com sucesso e mostrar ou ocultar a mensagem de sucesso de acordo.
No arquivo
js/index.js, localize a funçãodrop.Na função
drop, após o código que você adicionou na etapa anterior, adicione o seguinte código:if (draggedPiece !== this) { // TODO // ... // Get the data-id values of all the images in the puzzle container let imgDataIdList = [...container.getElementsByTagName("img")].map( (item) => item.dataset.id ); // Check if the puzzle is completed if (imgDataIdList.join(",") === "1,2,3,4,5,6,7,8,9") { // Show the success message successMessage.classList.remove("hide"); successMessage.classList.add("show"); } else { // Hide the success message successMessage.classList.remove("show"); successMessage.classList.add("hide"); } }Este código primeiro obtém os valores
data-idde todas as imagens no contêiner do quebra-cabeça e verifica se eles estão na ordem correta (1 a 9). Se estiverem, ele mostra a mensagem de sucesso removendo a classehidee adicionando a classeshowao elemento da mensagem de sucesso. Caso contrário, ele oculta a mensagem de sucesso removendo a classeshowe adicionando a classehide.
Testar o Projeto Concluído
- Atualize a página para ver o estado inicial do quebra-cabeça.
- Tente arrastar e soltar as peças do quebra-cabeça para reorganizá-las.
- Observe a mensagem de sucesso aparecendo ou desaparecendo com base na conclusão do quebra-cabeça.
- Certifique-se de que as peças do quebra-cabeça foram trocadas corretamente e que os atributos
srcedata-iddas imagens foram atualizados de acordo.
O efeito após a conclusão é o seguinte:

Parabéns! Você implementou com sucesso o jogo de quebra-cabeça usando o código fornecido. Sinta-se à vontade para explorar o projeto ainda mais e experimentar recursos ou aprimoramentos adicionais.
Resumo
Parabéns! Você concluiu este projeto. Você pode praticar mais laboratórios no LabEx para aprimorar suas habilidades.



