🐍 Roadmap – Jogo da Cobrinha

Disciplina de Desenvolvimento de Games · Ensino Médio

📅 10 Encontros Semanais 💻 HTML · CSS · JavaScript 🛠️ GitHub + VS Code 🎮 Produto Final: Jogo funcional

📌 Visão Geral da Disciplina

O objetivo desta disciplina não é formar programadores, mas sim usar a construção de um jogo real como contexto para apresentar conceitos básicos de desenvolvimento web de forma prática e motivadora. Ao final, cada aluno terá um jogo publicado no GitHub Pages que poderá compartilhar com amigos e família.

🎯 Perfil dos Alunos

  • Ensino médio
  • Lógica e algoritmos básicos
  • Pouca ou nenhuma experiência com web
  • Conta GitHub criada na 1ª aula

🏆 O que os Alunos Entregarão

  • Repositório no GitHub com o jogo
  • Jogo publicado via GitHub Pages
  • Jogo funcionando no celular (responsivo)
  • Personalização visual própria
Módulo 1 · Preparação
Aula01
Ferramentas

GitHub, Repositório e VS Code no Navegador

O que será trabalhado
  • O que é GitHub e para que serve (portfólio, histórico de código)
  • Criar conta no github.com e configurar perfil
  • Criar um repositório público chamado jogo-cobrinha
  • Abrir o VS Code no navegador com o atalho github.dev
  • Criar o primeiro arquivo index.html e fazer o primeiro commit
  • Conceito de commit: "salvar uma versão do trabalho"
Conceitos-chave
GitHub Repositório Commit VS Code Web github.dev
Entrega: Repositório criado com um arquivo index.html contendo apenas <h1>Meu Jogo da Cobrinha</h1> e primeiro commit feito.
Módulo 2 · HTML Básico
Aula02
HTML

Estrutura da Página – Esqueleto do Jogo

O que será trabalhado
  • Estrutura básica do HTML: <!DOCTYPE>, <html>, <head>, <body>
  • O que são tags, atributos e como elas funcionam em pares
  • Tags usadas no jogo: <div>, <h1>, <span>, <canvas>, <button>, <p>
  • O atributo id e como ele conecta HTML ao JavaScript
  • Construir o HTML completo do jogo (sem CSS ainda): título, pontuação, canvas, botões, instruções
  • Publicar via GitHub Pages e ver o resultado no navegador
Destaques do código do jogo
<canvas id="canvas"> <span id="pontos"> <button onclick="..."> GitHub Pages
Entrega: Página HTML sem estilo publicada no GitHub Pages com todos os elementos visíveis (feios, mas funcionais).
Módulo 3 · CSS
Aula03
CSS

Estilizando a Página – Cores, Fontes e Layout

O que será trabalhado
  • O que é CSS e como ele se relaciona com o HTML (tag <style>)
  • Seletores: por tag (body), por classe (.container), por id (#canvas)
  • Propriedades básicas: color, background, font-family, font-size, margin, padding
  • Box model explicado visualmente: conteúdo → padding → border → margin
  • Centralizar com display: flex e justify-content: center
  • Aplicar o fundo gradiente e o card branco do jogo
  • Estilizar botões: border-radius, cursor, transition
Destaques do código do jogo
linear-gradient flexbox border-radius box-shadow transition + hover
Entrega: Página visualmente parecida com o jogo final. Alunos são incentivados a personalizar as cores.
Aula04
CSS Avançado

Responsividade – O Jogo no Celular

O que será trabalhado
  • O que é responsividade: por que o layout quebra no celular
  • A meta tag viewport e sua importância
  • Media queries: @media (max-width: 600px)
  • Ajustar tamanho de fontes e elementos para telas pequenas
  • Os botões de direção (.teclas) com CSS Grid: para que servem no celular
  • Testar no celular físico ou usando DevTools do navegador
Destaques do código do jogo
@media query CSS Grid viewport DevTools
Entrega: Página responsiva funcionando no celular com os botões de direção visíveis.
Módulo 4 · JavaScript Básico
Aula05
JavaScript

Variáveis, Funções e Manipulação do HTML

O que será trabalhado
  • A tag <script> e onde ela deve ficar no HTML
  • Variáveis: let, const — diferenças e quando usar
  • Tipos básicos: número, texto (string), booleano
  • Funções: como declarar (function nome() {}) e como chamar
  • Conectar JS ao HTML: document.getElementById() e .textContent
  • Escrever as funções iniciarJogo() e pausarJogo() (apenas inicialização de variáveis por enquanto)
  • O atributo onclick nos botões: conectando clique à função
Destaques do código do jogo
let / const getElementById textContent function onclick
Entrega: Botões de iniciar e pausar chamando funções reais. Pontuação aparece na tela quando a função é chamada via console.
Aula06
JavaScript

Arrays, Objetos e o Loop do Jogo

O que será trabalhado
  • Arrays: o que são, como criar, como acessar (cobra[0]), .push(), .pop(), .unshift()
  • Objetos: { x: 10, y: 10 } — a cobra é um array de objetos!
  • A estrutura switch/case para direções
  • setInterval() e clearInterval(): o "motor" do jogo
  • Construir a função atualizarJogo() passo a passo
  • Lógica do spread: let cabeca = {...cobra[0]} — por que copiar e não referenciar?
Destaques do código do jogo
Array Objeto {x, y} setInterval switch/case unshift / pop
Entrega: A cobra se move na tela (ainda sem colisão ou comida), usando setInterval.
Módulo 5 · Canvas e Lógica do Jogo
Aula07
Canvas API

Desenhando no Canvas – A Cobra e a Comida

O que será trabalhado
  • O que é o elemento <canvas>: um "papel em branco" controlado por JS
  • Obter o contexto 2D: canvas.getContext('2d')
  • Desenhar retângulos: fillRect(x, y, largura, altura)
  • Definir cores: ctx.fillStyle
  • Limpar o canvas a cada frame: por que é necessário?
  • Desenhar a grade com beginPath(), moveTo(), lineTo(), stroke()
  • Desenhar a cobra percorrendo o array com forEach()
  • Desenhar a comida circular com arc()
  • Construir a função desenhar() completa
Destaques do código do jogo
getContext('2d') fillRect arc (círculo) forEach beginPath / stroke
Entrega: Cobra e comida visíveis no canvas. A cobra se move e é redesenhada a cada frame.
Aula08
Lógica

Colisões, Pontuação e Fim de Jogo

O que será trabalhado
  • Detectar colisão com as paredes: condições com if
  • Detectar colisão com o próprio corpo: laço for comparando posições
  • Detectar colisão com a comida e incrementar pontos
  • Gerar comida em posição aleatória com Math.random() e Math.floor()
  • Garantir que a comida não apareça sobre a cobra (loop while)
  • Controle de direção: impedir virada de 180° (mudarDirecao())
  • Eventos de teclado: addEventListener('keydown', ...)
  • Função fimDeJogo(): exibir mensagem sobre o canvas
Destaques do código do jogo
Math.random() for loop while loop addEventListener keydown fimDeJogo()
Entrega: Jogo completamente funcional! Cobra cresce, colide, pontua e exibe Game Over.
Módulo 6 · Finalização e Publicação
Aula09
Recursos Extras

localStorage, Recorde e Personalização

O que será trabalhado
  • O que é o localStorage: guardar dados no navegador
  • localStorage.setItem() e localStorage.getItem()
  • Implementar o recorde que persiste entre sessões
  • Operador lógico || para valor padrão: localStorage.getItem('recorde') || 0
  • Desafio de personalização: cada aluno customiza cores, velocidade (setInterval), tamanho do canvas
  • Adicionar mensagem de tela inicial com o canvas
Sugestões de desafio extra
Mudar velocidade com o tempo Comida especial com mais pontos Som ao comer Placar com nome do jogador
Entrega: Jogo com recorde funcionando e personalização visual única por aluno.
Aula10
Apresentação Final

GitHub Pages, Portfólio e Apresentação

O que será trabalhado
  • Ativar GitHub Pages: configurar o repositório para publicação automática
  • Cada aluno apresenta o jogo para a turma (3–5 minutos)
  • Revisão do que foi aprendido: HTML → estrutura, CSS → aparência, JS → comportamento
  • O que vem depois: frameworks (React), linguagens back-end, game engines (Unity)
  • Como o GitHub pode ser seu portfólio profissional
  • Link do jogo como "cartão de visitas" para compartilhar
Produto Final
🌐 Link público do jogo 📁 Repositório no GitHub 🎮 Jogo personalizado e funcional
🏆 Entrega Final: URL pública do jogo hospedado no GitHub Pages, compartilhada com a turma.

📊 Resumo das Aulas

Aula Tema Tecnologia Resultado Visível
01 GitHub e VS Code GitHub, git Repositório criado, primeiro commit
02 Estrutura HTML HTML Página com todos os elementos (sem estilo)
03 CSS – Estilo e Layout CSS Página visualmente apresentável
04 CSS – Responsividade CSS Media Queries Jogo funcionando no celular
05 JS – Variáveis e Funções JavaScript Botões chamando funções reais
06 JS – Arrays e Loop JavaScript Cobra se movendo na tela
07 Canvas – Desenho 2D Canvas API Cobra e comida desenhadas corretamente
08 Colisões e Pontuação JavaScript 🎮 Jogo 100% funcional!
09 localStorage e Extras JavaScript Recorde salvo + jogo personalizado
10 GitHub Pages + Apresentação GitHub Pages 🌐 Link público do jogo
© 2026 Ciro Macedo