Jogo Snake em Python: Crie Passo a Passo com PyGame
Diego Monutti
Aprenda a criar um Jogo Snake em Python com PyGame do zero. Monte a lógica, desenhe na tela e desenvolva seu primeiro jogo funcional passo a passo.
O que você vai aprender?
Crie o Jogo da Cobrinha com PyGame – Passo a Passo
Você já jogou o clássico Jogo da Cobrinha no celular? E se eu te dissesse que dá para criar esse jogo do zero em Python?
Criar o Jogo Snake em Python é uma das formas mais divertidas e didáticas de aprender lógica de programação e manipulação gráfica.
Com poucas linhas de código e a biblioteca PyGame, você pode desenvolver um jogo totalmente funcional — controlando o movimento da cobrinha, criando a lógica de colisão e pontuação, e ainda entendendo como funciona um loop de jogo.
Neste tutorial completo, você vai aprender como criar um jogo da cobrinha em Python do zero. Vamos configurar o ambiente, entender cada parte do código e, no final, você terá um jogo totalmente jogável na sua máquina.
E aí, quer começar na criação de jogos em Python com esse jogo nostálgico? Então faça o download do projeto e vamos começar!
Para fazer o download do(s) arquivo(s) utilizados na aula, preencha com o seu e-mail:
Não vamos te encaminhar nenhum tipo de SPAM! A Hashtag Treinamentos é uma empresa preocupada com a proteção de seus dados e realiza o tratamento de acordo com a Lei Geral de Proteção de Dados (Lei n. 13.709/18). Qualquer dúvida, nos contate.
Para criar o jogo Snake em Python, use a biblioteca PyGame: instale com pip install pygame, crie a janela e o loop principal, desenhe a cobra como uma lista de blocos e a comida em posições aleatórias, capture as setas do teclado para mover a cobra e aumente o corpo a cada comida — encerrando quando ela bate na parede ou em si mesma.
Entendendo a Lógica por Trás de um Jogo
Todo jogo segue uma estrutura fundamental composta por três partes principais:
Configurações iniciais (como tela, cores e variáveis);
Loop infinito (que mantém o jogo rodando e atualizando);
Interações do jogador (como apertar teclas ou fechar o jogo).
Dentro desse loop, o programa:
Desenha os objetos na tela (cobra, comida e pontuação);
Detecta eventos do usuário;
Verifica se o jogo deve continuar ou terminar.
Por que usar o PyGame para criar o Snake
A biblioteca PyGame é uma das formas mais acessíveis e divertidas de começar a criar jogos em Python. Ela permite desenhar elementos gráficos, capturar eventos do teclado e controlar o fluxo do jogo de forma simples.
Além disso, ao construir o Snake, você vai aprender conceitos essenciais de lógica de programação, como:
Loops infinitos;
Eventos de usuário;
Atualização de tela;
Controle de colisões;
Funções e variáveis dinâmicas.
Criar um jogo é uma das formas mais práticas e empolgantes de aprender Python!
Vale lembrar que você pode fazer qualquer modificação que quiser dentro do jogo. O que eu vou mostrar é o “básico” do jogo, mas pode personalizar do jeito que quiser!
Configurações Iniciais e Instalação do PyGame
Antes de começar, é importante garantir que o PyGame esteja instalado. Ele é a biblioteca responsável por exibir gráficos e capturar eventos do teclado.
Instalando o PyGame
Abra o terminal e digite:
Python
pip install pygame
Esse comando instala a biblioteca necessária para criar o jogo.
Após isso, você pode abrir o VS Code (ou outro editor de sua preferência) e criar um novo arquivo chamado main.py.
Dica: o PyGame é amplamente usado em projetos didáticos e protótipos. A documentação oficial está disponível em pygame.org/docs.
Criando a Estrutura do Jogo Snake
Agora, vamos entender o esqueleto de qualquer jogo feito com Python e PyGame. Um jogo 2D segue um padrão simples:
Configuração inicial (tela, cores, variáveis).
Loop principal (onde o jogo acontece).
Eventos (movimento, colisões e atualizações).
Importações e Configurações de Tela
Python
import pygame
import random
pygame.init()
pygame.display.set_caption("Jogo Snake Python")
largura, altura = 1200, 800
tela = pygame.display.set_mode((largura, altura))
relogio = pygame.time.Clock()
Aqui, criamos a janela do jogo e configuramos seu título. A variável relogio controla a velocidade do jogo — ou seja, quantas vezes por segundo o loop é executado.
Definindo Cores RGB
As cores são definidas no padrão RGB (vermelho, verde e azul). Cada valor vai de 0 a 255.
Seta para cima: cobra anda para o topo (eixo Y negativo).
Seta para baixo: cobra desce (eixo Y positivo).
Setas laterais: controlam o eixo X.
Lembre-se: o eixo X aumenta para a direita e o eixo Y aumenta para baixo.
Python Impressionador
Você vai aprender a linguagem de Programação que mais cresce no Mundo para fazer automações incríveis, desenvolver sites, fazer análises de dados, trabalhar com Ciência de Dados, Inteligência Artificial, mesmo que você nunca tenha tido nenhum contato com Programação na vida.
fim_jogo = False Flag de controle. Enquanto for False, o loop do jogo continua. Quando vira True, o jogo termina.
x = largura / 2 e y = altura / 2 Posição inicial da cabeça da cobra no centro da tela. Por que no centro? Começar no meio facilita testes (você tem espaço para qualquer direção) e evita “mortes instantâneas” por nascer encostado na borda.
velocidade_x = 0 e velocidade_y = 0 A cobra começa parada. Esses valores são atualizados quando o jogador pressiona as setas. Pense neles como “deslocamento por tick”: a cada atualização, x soma velocidade_x e y soma velocidade_y.
tamanho_cobra = 1 A cobra inicia com 1 segmento (apenas a cabeça). Cada comida aumenta esse valor em 1, o que estende o corpo.
pixels = [] Lista que guarda as posições (x, y) de todos os segmentos do corpo, na ordem.
a cada movimento, você adiciona a nova cabeça no fim,
e remove o segmento mais antigo (o “rabo”) — a não ser quando cresce por comer; nesse caso, não remove, aumentando o comprimento.
comida_x, comida_y = gerar_comida() Gera a primeira comida em uma posição aleatória alinhada ao grid (múltiplos de tamanho_quadrado), dentro dos limites da tela.
Observação importante: inteiros, grid e alinhamento
Com largura = 1200, altura = 800 e tamanho_quadrado = 20, tudo é múltiplo de 20.
largura / 2 → 600.0 e altura / 2 → 400.0 (float com .0).
Como os deslocamentos também são múltiplos de 20, e a comida nasce alinhada ao grid, as comparações x == comida_x e y == comida_y funcionam.
Para robustez extra (por exemplo, se a tela não for múltipla do tamanho do quadrado), você pode forçar inteiros alinhados ao grid desde o início:
Codigo
# centraliza e garante alinhamento ao grid
x = (largura // 2) - ((largura // 2) % tamanho_quadrado)
y = (altura // 2) - ((altura // 2) % tamanho_quadrado)
Resultado:x e y começam como inteiros e “encaixados” na malha, evitando qualquer surpresa se você mudar a resolução/tamanho do quadrado no futuro.
Criando o Loop Principal do Jogo
Agora, é hora de unir tudo dentro da função principal rodar_jogo().
Nesse trecho, o loop é executado continuamente até o jogador fechar a janela (QUIT). A cada iteração, a tela é atualizada e a posição da cobra é recalculada.
Atualizando a Posição e Detectando Colisões
Codigo
# Colisão com as bordas da tela
if x < 0 or x >= largura or y < 0 or y >= altura:
fim_jogo = True
# Atualiza posição
x += velocidade_x
y += velocidade_y
Se a cabeça da cobra sair da tela, o jogo termina.
Agora, desenhe os elementos:
Codigo
desenhar_comida(tamanho_quadrado, comida_x, comida_y)
pixels.append([x, y])
if len(pixels) > tamanho_cobra:
del pixels[0]
A lista pixels guarda as posições do corpo da cobra. Ao mover, um novo quadrado é adicionado à frente e o último é removido, simulando o movimento contínuo.
Colisão com o Próprio Corpo
Codigo
for pixel in pixels[:-1]:
if pixel == [x, y]:
fim_jogo = True
Aqui, o código verifica se a cabeça da cobra (última posição da lista) tocou alguma parte do corpo. Se sim, o jogo acaba.
Crescimento e Pontuação
Quando a cobra alcança a comida, o tamanho aumenta e uma nova comida é gerada:
Codigo
if x == comida_x and y == comida_y:
tamanho_cobra += 1
comida_x, comida_y = gerar_comida()
E pronto! Você acabou de criar um Jogo Snake em Python totalmente funcional — aprendendo na prática sobre lógica, loops, funções e manipulação de eventos.
Com pequenas adaptações, dá para transformar essa base em outros jogos: Pong, Tetris, Flappy Bird e muito mais.
O mais importante é que agora você entende como um jogo se estrutura internamente e como Python pode ser usado de forma criativa e visual.
Quer dominar Python e criar projetos incríveis como esse? Acesse o curso completo Python Impressionador da Hashtag e aprenda Python do zero até automações, análise de dados e desenvolvimento profissional.
Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo ou acesse o nosso canal do YouTube!
O que você aprende neste vídeo
Resposta rápida: Nesta aula completa, o instrutor ensina a criar o jogo da cobrinha (Snake) em Python do zero com a biblioteca PyGame. Você aprende a estrutura de qualquer jogo (configurações iniciais + um loop infinito que desenha os objetos, cria a lógica de fim e pega as interações), a desenhar a tela/cobra/comida com coordenadas X,Y e cores RGB, a mover a cobrinha pelas setas do teclado, gerar comida aleatória, fazer a cobra crescer ao comer e encerrar o jogo na colisão.
Neste vídeo (61 min):
2:00 - Configurações iniciais: importar PyGame e random, criar a tela e definir as cores (padrão RGB).
11:00 - Parâmetros da cobra (tamanho do quadrado, velocidade) e o relógio que controla o ritmo do jogo.
15:00 - O loop infinito do jogo: desenhar os objetos, criar a lógica de fim e pegar as interações do usuário.
20:00 - As variáveis iniciais: a posição da cobra (X,Y), a velocidade e a lista de pixels do corpo.
24:00 - A função gerar comida: posição aleatória (random) alinhada ao grid da tela.
47:00 - Comer a comida: fazer a cobra crescer e gerar uma nova comida.
49:00 - Mover a cobrinha pelas setas do teclado (atualizar a velocidade X e Y).
56:00 - Encerrar o jogo na colisão (com a parede ou o próprio corpo) e ideias para melhorar.
FAQ - Perguntas Frequentes
1. Preciso instalar algo além do PyGame para rodar o jogo?
Não. Apenas o PyGame e o Python instalados já são suficientes para rodar o código completo do Snake.
2. O jogo funciona em qualquer computador?
Sim, ele roda em Windows, Linux e macOS, desde que o Python e o PyGame estejam configurados corretamente.
3. Posso mudar o tamanho da tela do jogo?
Pode. Altere as variáveis largura e altura conforme o tamanho que desejar.
4. Como deixar o jogo mais rápido ou mais lento?
Basta ajustar o valor da variável velocidade_jogo. Quanto maior o número, mais rápido o jogo.
5. O que posso aprender criando esse jogo?
Você pratica lógica, eventos, listas, funções e controle de fluxo — habilidades essenciais para quem quer seguir em automação, data science ou desenvolvimento de software.
Baixe a planilha de controle de notas fiscais no Excel grátis: calcule ISS e retenções, veja o que está em aberto e gere a cobrança de cada nota de serviço.
Baixe apostilas gratuitas em PDF de Excel, Power BI, Python, Claude e agentes de IA, com exercícios e gabarito. Escolha a sua e comece hoje.
Autor do artigo
Diego Monutti
Analista de Operações e Especialista em Python
Analista de Operações e SEO, além de redator técnico na Hashtag Treinamentos, onde produz conteúdos sobre dados, IA, programação e produtividade. Pós-graduando em Ciência de Dados e Inteligência Artificial pela Universidade Tecnológica Federal do Paraná (UTFPR), com foco em Business Intelligence, Machine Learning, MLOps e Big Data.