Fase 3 8 horas Intermediário

O Salto da Rampa

Quem não tinha velocidade suficiente na rampa caía no buraco. Quem tinha, voava. Aqui você aprende a automatizar construções — com Minecraft Education e animações Pillow.

Fase 3 — O Salto da Rampa · Minecraft e Pillow
Progresso: 0/10 (0%)

Objetivos da Fase

O que você vai aprender:

  • API do Minecraft Education Edition em Python
  • Sistema de coordenadas 3D (x, y, z)
  • Automação de construções com loops aninhados
  • Biblioteca Pillow (PIL) para manipulação de imagens
  • Criação de animações GIF programaticamente
  • Leitura e escrita de arquivos de imagem
  • Parâmetros de física: gravidade, velocidade inicial, trajetória

O que você vai criar:

  • Torre automatizada no Minecraft (50 blocos)
  • Pirâmide gerada por loops aninhados
  • Animação GIF da trajetória do salto
  • Simulador de física: calcular_salto()
  • Relatório de saltos: BURACO / QUASE / VOOU / LENDÁRIO

3.1 — A Física do Salto

Na rampa de Palotina, o resultado dependia da velocidade de entrada. Abaixo de 5 m/s — buraco. Acima de 10 m/s — lendário. Isso é um bloco de condicionais aplicado à física real.

🏁 Velocidade e resultado

  • v < 5 m/s → BURACO — nem saiu do chão
  • 5 ≤ v < 8 m/s → QUASE — saltou mas aterrou curto
  • 8 ≤ v < 10 m/s → VOOU — bom salto, aplausos
  • v ≥ 10 m/s → LENDÁRIO — o salto que virou história
# calcular_salto() — da pista para o código
def calcular_salto(velocidade: float) -> str:
    atrito = 0.5  # terra vermelha de Palotina
    velocidade_ajustada = velocidade - atrito

    if velocidade_ajustada < 5:
        return "BURACO"
    if velocidade_ajustada < 8:
        return "QUASE"
    if velocidade_ajustada < 10:
        return "VOOU"

    return "LENDÁRIO"

>>> calcular_salto(10.5)
'LENDÁRIO'

3.2 — Automação no Minecraft

Construir 50 blocos manualmente levaria horas. Com um loop Python, leva 2 segundos. Isso é o poder da automação: a rampa é construída pelo código, não pelo piloto.

# Construindo a rampa da Paineira no Minecraft
from mcpi.minecraft import Minecraft
import mcpi.block as block

mc = Minecraft.create()
x0, y0, z0 = mc.player.getTilePos()

# Torre de 50 blocos de pedra — o pilar da rampa
for h in range(50):
    mc.setBlock(x0, y0 + h, z0, block.STONE.id)

# Pirâmide 10×10×10 — a pista vista de cima
for nivel in range(10):
    for dx in range(nivel, 10 - nivel):
        for dz in range(nivel, 10 - nivel):
            mc.setBlock(
                x0 + dx,
                y0 + nivel,
                z0 + dz,
                block.GRASS.id,
            )

3.3 — Animação GIF com Pillow

# Gerar frames da trajetória e salvar como GIF
from PIL import Image, ImageDraw
import math

frames = []
for t in range(0, 50):
    img = Image.new("RGB", (400, 200), (26, 122, 60))
    draw = ImageDraw.Draw(img)
    x = int(t * 8)
    y = int(200 - (10 * t - 0.5 * 9.8 * t**2 / 10))
    y = max(10, min(190, y))
    draw.ellipse([x - 8, y - 8, x + 8, y + 8], fill=(244, 196, 48))
    frames.append(img)

frames[0].save(
    "salto_palotina.gif",
    save_all=True,
    append_images=frames[1:],
    duration=50,
    loop=0,
)
Arquivo salvo: salto_palotina.gif

✅ Checklist da Fase 3

🏎 Projeto da Fase 3

Crie um simulador completo: 4 pilotos com bicicletas (Bicicleta), cada um com esforço diferente. Calcule o resultado do salto para cada um, gere um GIF animado da trajetória e exiba o relatório final no console com a classificação de cada piloto.

🔒 LGPD — Usamos localStorage para salvar progresso.