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.

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

Implementei `calcular_salto()` com os 4 resultados corretos
Testei todos os casos-limite da física do salto
Conectei ao Minecraft Education e obtive a posição do jogador
Construí a torre de 50 blocos com loop simples
Construí a pirâmide com loops aninhados (3 níveis)
Instalei Pillow e abri/modificou uma imagem existente
Gerei pelo menos 10 frames da animação do salto
Salvei o GIF animado e abri no Windows
Criei a classe `Bicicleta` com `pedalar()` e `frear()`
Simulei 4 pilotos com esforços diferentes e relatei resultados

#### 🏎 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.