Aprenda HTML, CSS, e JavaScript com esse projeto de um jogo online de adivinhação.

🔢 "Adivinha meu número" 🪄

Quando mais novo, ganhei um jogo que basicamente eram 6 pequenos cartões quadrados de madeira, com vários números escritos em cada cartão, conhecido como “Jogo da Idade”. Basicamente o jogo consistia em adivinhar o número (de 1 a 63) pensado por alguém, utilizando esses cartões.

O segredo por trás era ao mesmo tempo, simples, e fascinante! E como eu estava começando a aprender a programar na época em C, decidi tentar replicar aquele jogo num sisteminha em C sendo executado no terminal.

Há um tempo já tinha recriado ele apenas com HTML, CSS e JavaScript, e decidi agora compartilhar online.

Imagem dos cartões

Você pode utilizá-lo para treinar seus conhecimentos em HTML, CSS e JavaScript, e aqui vai a explicação para quem quiser entender toda a lógica do seu funcionamento, e vários conceitos bem interessantes por trás do site:

Primeiramente, como citado, o “Jogo Online” foi construído utilizando apenas HTML, CSS e JavaScript. Dessa forma, a gente tem uma implementação de uma aplicação funcionando como uma espécie de “SPA – Single Page Application”, sem a utilização de nenhum Framework, ou servidor. Ou seja, o JavaScript controla toda a “dinamicidade” do site, seus elementos HTML e estilização em CSS. JavaScript está por trás de toda construção e lógica.

E como de fato funciona a “MÁGICA”, e o site adivinha o número?

É tudo matemática.

De forma resumida, os cartões são construídos através de uma sequência lógica, e o script recupera o menor número do cartão apresentado onde o usuário respondeu “Sim”. Faz a soma e adivinha o número, por meio das somas de potências de base 2. O segredo está nos números apresentados. Confuso, não é?! Aqui vai um vídeo com a explicação mais detalhada desse princípio: Explicação da adivinhação do número por cartelas

Sobre o código do jogo:

O site parece adivinhar o número por eliminação, e dá a impressão de apresentar números aleatórios na tela. Isso é apenas um “efeito” para melhorar a mágica no site. Mas observe que o site sempre pergunta apenas 6 vezes para o usuário, apresentando os 6 cartões. Essa aleatoriedade é construída através do algoritmo Fisher–Yates shuffle, que faz o embaralhamento de arrays. Você pode conferir como funciona esse algoritmo: Como embaralhar arrays com o algoritmo Fisher–Yates

Além disso, os números de cada cartão também são "embaralhados", utilizando setTimeout() e Math.random()

O HTML é extremamente simples, e os elementos apresentados são construídos através de JavaScript, que é sempre acionado através do evento “onclick”

Por fim, as classes dos elementos ativos também são controladas com o JavaScript e CSS.

https://adivinhameunumero.vercel.app/ Inspecione a página para ver o código-fonte.

Parabéns, entrei no jogo e gostei bastante. A ideia é bem legal, e creio que treina bem o JS. Como ainda estou em processo de aprender a linguagem vou dar uma olhada no código mais pra frente.

Creio que esses projetos pessoais ajudam bastante na fixação da linguagem e ajuda a pensar na solução de problemas.

O que significa "pitch" no contexto usado no título deste artigo?

Creio que seja uma breve apresentação de algo - neste caso o projetinho do jogo!

Muito legal. Lembro que há muito tempo em uma fgeira de ciências fiquei responsável por apresentar este jogo. Agora vou praticar ele também... Massa.