Um projeto Full-Stack desenvolvido na avaliação de Desenvolvimento Web, com o tema livre, decidi criar um Game Web interativo e divertido de advinhar linguagens de programação. Como inspiração usei o site Gamedle.
- Descrição do Projeto
- Screenshots Do Projeto
- Tecnologias Utilizadas
- Endpoints da API
- Como Executar o Projeto Localmente
- Como Configurar o Banco De Dados
- Licença
- Contato
O What Is The Language ou WITL é um Game Web onde o usuário advinha qual é a linguagem de progamação através de dicas, o usuário pode escolher entre 2 modos de jogo, Advinhe Pela Logo ou Advinhe Pelo Código, ambos os modos possuem sistemas de pontos e vidas, o usuário ganha pontos por acertar a advinhar a linguagem e perde vidas toda vez que erra. O jogo encerra quando o usuário perder todas as vidas ou acertando todas as linguagens, após isso aparecerá uma tela Ranking de todos os jogadores com seus nomes e suas pontuações.
Screenshots Mobile - (Clique nas imagens para amplia-las)
Screenshots Desktop - (Clique nas imagens para amplia-las)
-
Frontend:
-
Backend:
-
APIs:
-
Endpoints proprios com dados de todas as linguagens
-
API DiceBear para fornecer URL de imagens para os Avatares
-
Endpoint: /dados
Parâmetros de Consulta:
id
ID da linguagem.
Exemplo de Requisição:
http://localhost:3000/dados?id=1
Exemplo de Resposta:
{
"id": 1,
"nome": "Python",
"foto_url": "https://cdn.iconscout.com/icon/free/png-256/free-python-logo-icon-download-in-svg-png-gif-file-formats--technology-social-media-vol-5-pack-logos-icons-3030224.png?f=webp",
"tipo": "back",
"dica1": "x = [i**2 for i in range(5)]",
"dica2": "def soma(a, b): return a + b",
"dica3": "for i in range(5): print(i)",
"dica4": "print(\"Hello, World!\")",
"dica5": "# código em Python"
}
Endpoint: /avatars
Parâmetros de Consulta:
id
ID do avatar.
Exemplo de Requisição:
http://localhost:3000/avatars?id=1
Exemplo de Resposta:
[
{
"id": 1,
"image_url": "https://api.dicebear.com/9.x/adventurer/svg?seed=Jessica&hair=long22&hairColor=592454"
}
]
Endpoint: /ranking
Exemplo de Requisição:
http://localhost:3000/ranking
Exemplo de Resposta:
{
"message": "Ranking obtido com sucesso!",
"data": [
{
"id": 2,
"nick": "Glauedson",
"cor": "#e4f312",
"avatar": "https://api.dicebear.com/9.x/adventurer/svg?seed=Eliza&earrings[]&earringsProbability=100&glassesProbability=100&hair=short08&hairColor=6a4e35&mouth=variant02&skinColor=f2d3b1",
"pontos": 14000,
"modo_jogo": "Pelo Codigo"
}
]
}
Armazena as linguagens e algumas informações adicionais pro front.
CREATE TABLE linguagens (
id SERIAL PRIMARY KEY,
nome VARCHAR(50) NOT NULL,
foto_url TEXT NOT NULL,
tipo VARCHAR(20) NOT NULL,
dica1 TEXT NOT NULL,
dica2 TEXT NOT NULL,
dica3 TEXT NOT NULL,
dica4 TEXT NOT NULL,
dica5 TEXT NOT NULL
);
Colunas:
id
: Identificador único.nome
: Nome da linguagem (ex.: C#, Java, Python).foto_url
: URL da logo da linguagem.tipo
: Tipo da linguagem ( ex.: Back, Front, Bd).dica
: de 1 a 4 são as linhas de codigo de dicas pro jogador.dica5
: Linha final que aparece quando o jogador erra todas as tenativas.
Armazena os links das imagens de avatares pro jogador escolher, as imagens foram pegas no site da API DiceBear.
CREATE TABLE images (
id SERIAL PRIMARY KEY,
image_url TEXT NOT NULL
);
Colunas:
id
: Identificador único do Avatar.image_url
: URL do Avatar.
Registra os dados e a pontuação de cada jogador.
CREATE TABLE ranking (
id SERIAL PRIMARY KEY,
nick VARCHAR(100) NOT NULL,
cor VARCHAR(7) NOT NULL,
avatar TEXT NOT NULL,
pontos INT NOT NULL DEFAULT 0,
modo_jogo VARCHAR(50) NOT NULL
);
Colunas:
id
: Identificador único para cada registro.nick
: Nome do jogador.cor
: Cor escolhida (no formato hexadecimal, como #FFFFFF).avatar
: URL do avatar.pontos
: Pontos acumulados pelo jogador.modo_jogo
: Modo de jogo (ex: Pelo codigo, Pela Logo).
- Clone este repositório:
git clone https://github.com/Glauedson/WhatIsTheLanguage.git
- Navegue até o diretório do projeto:
cd WhatIsTheLanguage
- Configure o backend:
- Certifique-se de que o PostgreSQL está instalado e configurado.
- Atualize os dados para acessar seu banco de dados na pasta
src/back-end
no arquivoserver.js
. - Execute o backend usando o comando no terminal do VsCode:
node src/back-end/server.js
- Inicie o frontend abrindo o arquivo
index.html
em um navegador.
Como configurar o banco de dados PostgreSQL e executar os scripts create.sql
e insert.sql
para iniciar corretamente o jogo.
Se ainda não possui o PostgreSQL instalado, siga os passos abaixo:
-
Baixe o instalador do PostgreSQL no site oficial:
https://www.postgresql.org/download/
-
Durante a instalação, defina uma senha para o usuário postgres.
-
Certifique-se de instalar o pgAdmin para gerenciar o banco de forma visual (opcional).
Após instalar o PostgreSQL, siga os passos para criar o banco de dados:
Usando o pgAdmin:
-
Abra o pgAdmin.
-
Conecte-se ao servidor PostgreSQL.
-
Clique com o botão direito em Databases e selecione Create > Database.
-
No campo Database name, insira
witl
e clique em Save.
Usando o terminal (psql):
-
Abra o terminal e execute:
psql -U postgres
-
Digite a senha do usuário
postgres
. -
Crie o banco de dados com:
CREATE DATABASE witl;
Agora, vamos criar as tabelas e inserir os dados iniciais.
Usando o pgAdmin:
-
No pgAdmin, expanda Databases > witl > Schemas > public.
-
Clique em Query Tool.
-
Copie e cole o conteúdo do arquivo
create.sql
e execute. -
Faça o mesmo para
insert.sql
.
Usando o terminal (psql):
- No terminal, conecte-se ao banco de dados:
psql -U postgres -d witl_db
- Execute os arquivos SQL:
\i /caminho/para/create.sql \i /caminho/para/insert.sql
Após rodar os scripts, você pode conferir se os dados foram inseridos corretamente.
No pgAdmin ou no terminal, execute:
SELECT * FROM ranking;
Isso deve exibir os jogadores e suas pontuações.
Este projeto não possui uma licença definida. Sinta-se livre para utilizar e modificar o código conforme necessário.
Para dúvidas ou sugestões, entre em contato:
- Nome: Glauedson Carlos Rodrigues
- Email: (gluedson18s@gmail.com)