Fase 2 8 horas Básico

A Curva da Paineira

A Paineira exigia embalo: velocidade acumulada antes da curva. Aqui você aprende Pygame — e o jogo Pong nasce na pista.

Fase 2 — A Curva da Paineira · Pygame e Pong
Progresso: 0/10 (0%)

Objetivos da Fase

O que você vai aprender:

  • Instalação e configuração do Pygame
  • Sistema de coordenadas e janela gráfica
  • Loop principal do jogo (game loop)
  • Eventos de teclado e mouse
  • Detecção de colisões com Rect
  • FPS e controle de velocidade
  • Classes Python aplicadas a objetos do jogo

O que você vai criar:

  • Uma janela Pygame funcional com fundo verde-pista
  • Uma bola que se move e rebate nas paredes
  • Duas raquetes controladas por teclado
  • Placar de pontos em tempo real
  • O jogo Pong da Pista completo

2.1 — O Embalo da Paineira

Na pista de Palotina, a Paineira era a curva mais temida. Para virá-la sem cair, o piloto precisava de embalo: velocidade acumulada metros antes. No Pygame, o embalo é o loop principal — ele roda 60 vezes por segundo, acumulando frames, atualizando posições e redesenhando a tela.

🏁 Metáfora do loop

Cada frame é uma pedalada. O loop não para enquanto o jogo estiver rodando — assim como o piloto não para de pedalar enquanto está no circuito. clock.tick(60) = 60 pedaladas por segundo.

# Estrutura base do game loop — a "pedalada" do Pygame
import pygame

pygame.init()
tela = pygame.display.set_mode((800, 600))
pygame.display.set_caption("Circuito Ferradura — Pong da Pista")
clock = pygame.time.Clock()
rodando = True

while rodando:
    # 1. Eventos (o piloto olha para a pista)
    for evento in pygame.event.get():
        if evento.type == pygame.QUIT:
            rodando = False

    # 2. Lógica (calcular velocidade e posição)
    bola.mover()
    bola.verificar_colisao(raquete_esq, raquete_dir)

    # 3. Desenho (o piloto entra na curva)
    tela.fill((26, 122, 60))   # verde-pista
    bola.desenhar(tela)
    pygame.display.flip()

    clock.tick(60)   # 60 FPS = 60 pedaladas/segundo

2.2 — Colisões: a Física da Pista

A bola rebate nas paredes e nas raquetes. A física é simples: quando a bola toca uma borda, o sinal da velocidade se inverte. Isso é a programação da curva da Paineira: o piloto dobra a direção.

# Classe Bola — objeto com estado e comportamento
class Bola:
    def __init__(self):
        self.x, self.y = 400, 300
        self.vx, self.vy = 5, 5
        self.raio = 10

    def mover(self):
        self.x += self.vx
        self.y += self.vy

        # Rebater nas paredes superior e inferior
        if (
            self.y - self.raio <= 0
            or self.y + self.raio >= 600
        ):
            self.vy *= -1  # inverte — a curva da Paineira

✅ Checklist da Fase 2

🏎 Projeto da Fase 2

Crie o jogo Pong da Pista completo: duas raquetes, uma bola, placar, rebatimento nas paredes e detecção de ponto. Use as cores do Circuito Ferradura: verde-pista #1a7a3c e amarelo-palotina #f4c430.

🔒 LGPD — Usamos localStorage para salvar progresso. Política de Privacidade.