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 v = velocidade - ATRITO if v < 5: return "BURACO" elif v < 8: return "QUASE" elif v < 10: return "VOOU" else: 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.