Construindo a Base do Jogo - Janela e Game Loop

30/04/2026
iniciante pygame python 2d guia série

⚠️Antes de começarmos:

  • [ ] Python Instalado (check!)
  • [ ] Editor de código pronto (check!)

Se você ainda não instalou o Python, clique aqui para configurar rapidamente. Depois, volte para continuarmos.

Nesta série, você aprenderá a criar um jogo estilo space shooter em Python com Pygame.

Tudo do zero. Passo a passo. Mesmo sendo iniciante.

Ao final da série, você terá:

Para darmos início, vamos instalar o Pygame, criar a janela do jogo e implementar o primeiro game loop.

Instalando o Pygame


Durante a criação do nosso jogo vamos utilizar o Pygame, uma biblioteca do Python voltada para desenvolvimento de jogos.

Para instalá-la execute o seguinte comando em um terminal:

$ pip install pygame

Caso você esteja utilizando o VS Code, pressione Ctrl + J para abrir o terminal integrado.

Se a instalação for concluída com sucesso, ao executar o comando python -m pygame, você deverá ver a versão da biblioteca instalada.

$ python -m pygame
pygame 2.6.1 (SDL 2.28.4, Python 3.12.3)
Hello from the pygame community. <https://www.pygame.org/contribute.html>

Com o Pygame devidamente instalado podemos começar a criar o nosso jogo.

Crie uma pasta para o projeto e, dentro dela, um arquivo chamado main.py. Em seguida, abra a pasta no seu editor de código.

Antes de começar a criar os elementos do jogo, precisamos criar o ambiente onde tudo vai acontecer: a janela principal.

Criando a Janela com Pygame


Vamos começar criando essa janela.

# Importa o Pygame
import pygame 

# Prepara os componentes internos do Pygame
pygame.init()

# Cria a janela do jogo
janela = pygame.display.set_mode((800, 600))

Primeiro importamos a biblioteca Pygame.

Ela possui vários módulos, que são partes especializadas da biblioteca responsáveis por áudio, imagens, teclado, mouse e outras funcionalidades.

A função pygame.init() prepara esses módulos. Depois disso, podemos começar a usá-los no jogo.

Quase todos os programas feitos com Pygame começam com pygame.init().

Em seguida, criamos uma janela com:

pygame.display.set_mode((800, 600))

Onde:

Executando o jogo, a janela deve abrir e fechar rapidamente. Isso acontece porque o programa cria a janela e termina logo em seguida.

Para resolver este problema precisamos manter o jogo em execução usando o game loop.

Mantendo o Jogo em Execução


O game loop é simplesmente um ciclo que se repete continuamente enquanto o jogo estiver aberto.

Pense nele como o motor de um carro ligado. Enquanto o motor está funcionando, todas as outras partes podem operar.

O que o Game Loop faz?


Ele executa continuamente várias tarefas:

Nos próximos capítulos, quase todo elemento visual será desenhado repetidamente dentro do game loop. Por isso, entender esse ciclo agora é tão importante.

Criando um Game Loop


Podemos criar um game loop da seguinte maneira:

rodando = True # Diz se o jogo está em execução

# Game loop
while rodando:
    # Captura eventos (ações do usuário, como pressionar teclas ou fechar a janela)
    for evento in pygame.event.get():
        # Verifica se a janela foi fechada
        if evento.type == pygame.QUIT:
            rodando = False

    # Preenche a janela com a cor preta
    janela.fill('black')         

    # Atualiza toda a janela
    pygame.display.flip()

# Finaliza o Pygame corretamente
pygame.quit()

O while rodando cria um ciclo contínuo. Ele faz o jogo repetir suas ações várias vezes por segundo.

Dentro do game loop, criamos um loop for que itera os eventos com pygame.event.get() e verificamos se o evento de fechamento de janela foi executado.

Um evento é qualquer ação detectada pelo jogo, como pressionar uma tecla ou fechar a janela.

Quando a janela é fechada, rodando muda para False. Isso encerra o game loop e finaliza o jogo.

A função fill() preenche toda a janela com uma única cor. Aqui usamos ela para limpar toda a tela antes de desenharmos os elementos.

Imagine que o Pygame desenha tudo em uma folha de rascunho invisível. Quando usamos pygame.display.flip(), essa folha é exibida na tela de uma só vez.

Em jogos, o desenho não aparece na tela no instante em que é criado. Ele precisa ser "publicado" no fim do ciclo.

Agora ao executar o jogo, a janela permanecerá aberta. Ela só será fechada quando o evento pygame.QUIT acontecer.

No final, assim como usamos o pygame.init() para preparar o Pygame, usamos pygame.quit() para encerrar seus componentes corretamente quando o jogo termina.

Na prática, isso ocorre quando você clica no botão de fechar.

O Jogo já abre. Agora falta controlar o ritmo.


Até este ponto o jogo já funciona, mas existe um problema. Precisamos limitar o FPS (quadros por segundo) para evitar que o jogo rode rápido demais.

Para controlar o FPS, o Pygame fornece uma ferramenta chamada Clock. Essa ferramenta é criada da seguinte maneira:

clock = pygame.time.Clock()

Essa ferramenta controla a velocidade do loop. Dentro do game loop, chamamos clock.tick(60) para limitar o jogo a 60 FPS (60 quadros por segundo).

while rodando:
    ...

    # Limita a velocidade para 60 FPS (60 quadros por segundo)
    clock.tick(60)

Aqui a função clock.tick(60) é responsável por adicionar um limite de 60 FPS no game loop.

Com isso, o jogo roda em velocidade controlada. O comportamento fica previsível em qualquer máquina.

O Clock não desenha nada e não move nada. Ele só ajuda o jogo a manter uma cadência estável.

O que Aprendemos até Agora?


Até o momento você já possui uma estrutura fundamental do o jogo funcionando. A janela abre corretamente, permanece ativa e atualiza dezenas de vezes por segundo.

Neste capítulo você:

Nos próximos capítulos, tudo o que construirmos será adicionado sobre essa mesma base.

Código Completo


import pygame

pygame.init()
janela = pygame.display.set_mode((800, 600))
clock = pygame.time.Clock()

running = True
while rodando:
    for evento in pygame.event.get():
        if evento.type == pygame.QUIT:
            rodando = False

    janela.fill('black')

    pygame.display.flip()
    clock.tick(60)

pygame.quit()

Próximo Passo: Adicionando o Primeiro Objeto Visual


No próximo capítulo, vamos finalmente desenhar a nave do jogador e preparar a base para movimentá-la na tela.