#!/usr/bin/env python3 # Gera as duas imagens que trocam, no Mission: Apophis 2036, artes que imitam marcas de terceiros: # assets/nazalogo32.png o emblema da agencia ficticia "NAZA" no menu principal copia o desenho do emblema da # NASA (circulo azul, estrelas, faixa vermelha em V e o nome em branco); o nosso e um # circulo verde com um planeta, uma orbita e estrelas, sem texto. # assets/splash.png a tela de abertura mostra um console de video game de uma fabricante (com os dois # controles); o nosso poe no lugar a nave do proprio jogo (assets/shuttle16.png ampliada) # sobre o mesmo circulo verde e mantem, sem mudanca, o texto "A GAME BY / TOBIASZ # STAMBORSKI" do original. # As imagens novas sao nossas e ficam em CC0 (o texto e a nave sao do autor, MIT). A saida e deterministica e fica # versionada ao lado; o build-mission-apophis-2036.sh so copia os .png. # # artifacts/tools/venv/bin/python -I gen-art.py import os, sys from PIL import Image, ImageDraw HERE = os.path.dirname(os.path.abspath(__file__)) src = sys.argv[1] GREEN = (113, 227, 146, 255) DARK = (73, 170, 16, 255) WHITE = (255, 255, 255, 255) BLACK = (0, 0, 0, 255) # Emblema 32x32: circulo verde-escuro, planeta verde com uma orbita branca inclinada e tres estrelas. logo = Image.new('RGBA', (32, 32), (0, 0, 0, 0)) d = ImageDraw.Draw(logo) d.ellipse((1, 1, 30, 30), fill=(16, 64, 40, 255), outline=GREEN) d.ellipse((10, 10, 21, 21), fill=GREEN) d.ellipse((12, 11, 16, 14), fill=(170, 245, 190, 255)) d.arc((4, 12, 27, 19), 190, 350, fill=WHITE) d.arc((4, 12, 27, 19), 10, 170, fill=WHITE) for x, y in ((7, 7), (24, 8), (22, 25)): d.point((x, y), fill=WHITE) # a orbita passa por tras do planeta: redesenha a metade de cima do planeta por cima do arco for y in range(10, 16): for x in range(10, 22): if (x - 15.5) ** 2 + (y - 15.5) ** 2 <= 30 and logo.getpixel((x, y)) == WHITE and y < 15: logo.putpixel((x, y), GREEN) logo.save(os.path.join(HERE, 'nazalogo32.png')) # Abertura 320x200: as linhas 0-140 (o console) viram preto; um circulo verde com a nave ampliada 4x no lugar. splash = Image.open(os.path.join(src, 'splash.png')).convert('RGBA') d = ImageDraw.Draw(splash) d.rectangle((0, 0, 319, 140), fill=BLACK) d.ellipse((120, 32, 199, 111), fill=GREEN) ship = Image.open(os.path.join(src, 'shuttle16.png')).convert('RGBA').resize((64, 64), Image.NEAREST) splash.alpha_composite(ship, (128, 40)) for x, y in ((136, 46), (184, 52), (180, 96), (132, 92)): splash.putpixel((x, y), WHITE) splash.save(os.path.join(HERE, 'splash.png'))