def main(): ''' (None) -> None Escreva o seu programa que cria o vídeo como descrito no enunciado. O código abaixo serve para ilustrar como usar a função mostre_video() que recebe uma lista com NumPymagens e as mostra em um vídeo na tela do seu computador usando PyGame. Por isso lembre-se de seguir as instruções para instalar PyGame no seu computador. Remova ou altere o código para gerar o seu próprio vídeo. Não se esqueça de criar funções para facilitar o entendimento do seu vídeo. Você pode (mas não precisa!) salvar o seu vídeo em um formato mp4, para mostrar sua obra no fórum da disciplina. Para isso, antes de salvar, você deve instalar o software ffmpeg que você pode baixar de https://ffmpeg.org/download.html. ''' video = [] preto = NumPymagem(ALTURA, LARGURA, WHITE) branco = NumPymagem(ALTURA, LARGURA, WHITE) cor = BLACK raio = 5 centrox = random.randint(raio + 1,ALTURA - raio - 1) centroy = random.randint(raio + 1,LARGURA - raio - 1) velocidadeX = random.uniform(0.7, 2.5) velocidadeY = random.uniform(0.7, 2.5) aumentaX = True aumentaY = True for i in range(120): #Faz surgir a bolinha cor = (cor - 1.5)%WHITE bola = NumPymagem(ALTURA, LARGURA, WHITE) bola.pinte_disco(centrox, centroy, raio, cor) video.append(bola) for i in range(600): #Move a bolinha bola.pinte_disco(centrox, centroy, raio, BLACK) video.append(bola) bola = NumPymagem(ALTURA, LARGURA, WHITE) if((ALTURA - centrox <= raio) or centrox <= raio): if(aumentaX == True): aumentaX = False else: aumentaX = True if((LARGURA - centroy <= raio) or centroy <= raio): if(aumentaY == True): aumentaY = False else: aumentaY = True if(aumentaX): centrox += velocidadeX else: centrox -= velocidadeX if(aumentaY): centroy += velocidadeY else: centroy -= velocidadeY #Faz a bolinha dar flash antes de explodir for i in range(30): bola.pinte_disco(centrox, centroy, raio, BLACK) bola = NumPymagem(ALTURA, LARGURA, WHITE) video.append(bola) for i in range(10): bola.pinte_disco(centrox, centroy, raio, 200) bola = NumPymagem(ALTURA, LARGURA, WHITE) video.append(bola) for i in range(30): bola.pinte_disco(centrox, centroy, raio, BLACK) bola = NumPymagem(ALTURA, LARGURA, WHITE) video.append(bola) for i in range(10): bola.pinte_disco(centrox, centroy, raio, 200) bola = NumPymagem(ALTURA, LARGURA, WHITE) video.append(bola) for i in range(30): bola.pinte_disco(centrox, centroy, raio, BLACK) bola = NumPymagem(ALTURA, LARGURA, WHITE) video.append(bola) for i in range(10): bola.pinte_disco(centrox, centroy, raio, 200) bola = NumPymagem(ALTURA, LARGURA, WHITE) video.append(bola) for i in range(15): bola.pinte_disco(centrox, centroy, raio, BLACK) bola = NumPymagem(ALTURA, LARGURA, WHITE) video.append(bola) for i in range(10): bola.pinte_disco(centrox, centroy, raio, 200) bola = NumPymagem(ALTURA, LARGURA, WHITE) video.append(bola) for i in range(15): bola.pinte_disco(centrox, centroy, raio, BLACK) bola = NumPymagem(ALTURA, LARGURA, WHITE) video.append(bola) for i in range(10): bola.pinte_disco(centrox, centroy, raio, 200) bola = NumPymagem(ALTURA, LARGURA, WHITE) video.append(bola) for i in range(15): bola.pinte_disco(centrox, centroy, raio, BLACK) bola = NumPymagem(ALTURA, LARGURA, WHITE) video.append(bola) for i in range(10): bola.pinte_disco(centrox, centroy, raio, 200) bola = NumPymagem(ALTURA, LARGURA, WHITE) video.append(bola) for i in range(5): bola.pinte_disco(centrox, centroy, raio, BLACK) bola = NumPymagem(ALTURA, LARGURA, WHITE) video.append(bola) for i in range(10): bola.pinte_disco(centrox, centroy, raio, 200) bola = NumPymagem(ALTURA, LARGURA, WHITE) video.append(bola) for i in range(5): bola.pinte_disco(centrox, centroy, raio, BLACK) bola = NumPymagem(ALTURA, LARGURA, WHITE) video.append(bola) for i in range(10): bola.pinte_disco(centrox, centroy, raio, 200) bola = NumPymagem(ALTURA, LARGURA, WHITE) video.append(bola) for i in range(5): bola.pinte_disco(centrox, centroy, raio, BLACK) bola = NumPymagem(ALTURA, LARGURA, WHITE) video.append(bola) for i in range(10): bola.pinte_disco(centrox, centroy, raio, 200) bola = NumPymagem(ALTURA, LARGURA, WHITE) video.append(bola) for i in range(5): bola.pinte_disco(centrox, centroy, raio, BLACK) bola = NumPymagem(ALTURA, LARGURA, WHITE) video.append(bola) for i in range(10): bola.pinte_disco(centrox, centroy, raio, 200) bola = NumPymagem(ALTURA, LARGURA, WHITE) video.append(bola) for i in range(120): #Explode a bolinha bola.pinte_disco(centrox, centroy, raio, cor) raio += 2 cor = random.randint(40, 250) bola = NumPymagem(ALTURA, LARGURA, WHITE) video.append(bola) for i in range(60): #Descanso entre animacoes descanso = NumPymagem(ALTURA, LARGURA, WHITE) video.append(descanso) cArma = 0 for i in range(120): #Surgimento do canhão arma = NumPymagem(ALTURA, LARGURA, WHITE) arma.pinte_retangulo(ALTURA//2 - 4, 0, ALTURA//2 + 4, cArma, BLACK) arma.pinte_disco(ALTURA//2 - 15, cArma - 30, 20, 50) if(cArma < 40): cArma += 1 video.append(arma) cProjetil = cArma rExplosao = 0 for i in range(180): #Recuo do disparo arma.pinte_retangulo(ALTURA//2 - 4, 0, ALTURA//2 + 4, cArma, BLACK) arma.pinte_disco(ALTURA//2 - 15, cArma - 30, 20, 50) if(cArma > 25): cArma -= 10 #Trajetoria do projetil arma.pinte_retangulo(ALTURA//2 - 3, cProjetil, ALTURA//2 + 3, cProjetil + 10, BLACK) cProjetil += 6 #Explosao if(cProjetil >= LARGURA): arma.pinte_disco(ALTURA//2 , LARGURA, rExplosao, cor) rExplosao += 2 cor = random.randint(40, 250) arma = NumPymagem(ALTURA, LARGURA, WHITE) video.append(arma) for i in range(60): #Descanso entre animacoes descanso = NumPymagem(ALTURA, LARGURA, WHITE) video.append(descanso) lChao = 0 altBola = ALTURA + 10 limite = 30 limiteSobe = 60 velocidade = 4 cai = True bolaPong = NumPymagem(ALTURA, LARGURA, WHITE) for i in range(120): #Chão do bola pong bolaPong = NumPymagem(ALTURA, LARGURA, WHITE) bolaPong.pinte_retangulo(0, 0, 20, lChao, BLACK) if(lChao < LARGURA + 50): lChao += 2 video.append(bolaPong) for i in range(180): bolaPong.pinte_retangulo(0, 0, 20, LARGURA + 5, BLACK) bolaPong.pinte_disco(altBola, LARGURA//2, 10, BLACK) if(cai): if(altBola >= 30): altBola -= velocidade bolaPong = NumPymagem(ALTURA, LARGURA, WHITE) else: limiteSobe -= 5 cai = False else: if(altBola <= limiteSobe): altBola += velocidade bolaPong = NumPymagem(ALTURA, LARGURA, WHITE) else: cai = True if(limite <= 0): velocidade = 0 video.append(bolaPong) exploxaoFinal = NumPymagem(ALTURA, LARGURA, WHITE) raioExp = 1 for i in range(60): exploxaoFinal.pinte_retangulo(0, 0, 20, LARGURA + 5, BLACK) exploxaoFinal.pinte_disco(30, LARGURA//2, 10, BLACK) exploxaoFinal.pinte_disco(30, LARGURA//2, raioExp, cor) raioExp += 2 cor = random.randint(40, 255) exploxaoFinal = NumPymagem(ALTURA, LARGURA, WHITE) video.append(exploxaoFinal) mostre = True if mostre: mostre_video(video) salve = False if salve: print("Salvando vídeo") salve_video(video)
def main(): ''' (None) -> None Escreva o seu programa que cria o vídeo como descrito no enunciado. O código abaixo serve para ilustrar como usar a função mostre_video() que recebe uma lista com NumPymagens e as mostra em um vídeo na tela do seu computador usando PyGame. Por isso lembre-se de seguir as instruções para instalar PyGame no seu computador. Remova ou altere o código para gerar o seu próprio vídeo. Não se esqueça de criar funções para facilitar o entendimento do seu vídeo. Você pode (mas não precisa!) salvar o seu vídeo em um formato mp4, para mostrar sua obra no fórum da disciplina. Para isso, antes de salvar, você deve instalar o software ffmpeg que você pode baixar de https://ffmpeg.org/download.html. ''' video = [] preto = Numpymagem((ALTURA, LARGURA), BLACK) branco = Numpymagem((ALTURA, LARGURA), WHITE) print(f"Está compatível com numpymutil: {type(preto.data) is np.ndarray}") FRAMES = 900 RAIO = LARGURA // 7 Y = ALTURA // 2 X = LARGURA // 2 RAIO_C = 7 * RAIO / 4 for i in range(FRAMES // 3): canvas = Numpymagem((ALTURA, LARGURA), BLACK) canvas.pinte_disco(ALTURA // 2, LARGURA // 2, RAIO // 2, WHITE) canvas.pinte_disco(Y + math.floor(RAIO_C*math.sin(i*math.pi/60)), X + \ math.floor(RAIO_C*math.cos(i*math.pi/60)), RAIO//4, WHITE) canvas.pinte_disco(Y + math.floor(RAIO_C*math.sin(-i*math.pi/60)), X - \ math.floor(RAIO_C*math.cos(i*math.pi/60)), RAIO//4, WHITE) video.append(canvas) for i in range(FRAMES // 3, 2 * FRAMES // 3): canvas = Numpymagem((ALTURA, LARGURA), BLACK) canvas.pinte_disco(ALTURA // 2, LARGURA // 2, RAIO // 2, WHITE) canvas.pinte_disco(Y + math.floor(RAIO_C*math.sin(-i*math.pi/60)), X + \ math.floor(RAIO_C*math.cos(-i*math.pi/60)), RAIO//4, WHITE) canvas.pinte_disco(Y + math.floor(RAIO_C*math.sin(i*math.pi/60)), X - \ math.floor(RAIO_C*math.cos(i*math.pi/60)), RAIO//4, WHITE) video.append(canvas) for i in range(2 * FRAMES // 3, FRAMES): canvas = Numpymagem((ALTURA, LARGURA), BLACK) canvas.pinte_disco(ALTURA // 2, LARGURA // 2, RAIO // 2, WHITE) canvas.pinte_disco(Y + math.floor(RAIO_C*math.sin(i*math.pi/60)), X + \ math.floor(RAIO_C*math.cos(i*math.pi/60)), RAIO//4, WHITE) canvas.pinte_disco(Y + math.floor(RAIO_C*math.sin(-i*math.pi/60)), X - \ math.floor(RAIO_C*math.cos(i*math.pi/60)), RAIO//4, WHITE) video.append(canvas) mostre = True if mostre: mostre_video(video) salve = False if salve: print("Salvando vídeo") salve_video(video)
def main(): ''' (None) -> None Escreva o seu programa que cria o vídeo como descrito no enunciado. O código abaixo serve para ilustrar como usar a função mostre_video() que recebe uma lista com NumPymagens e as mostra em um vídeo na tela do seu computador usando PyGame. Por isso lembre-se de seguir as instruções para instalar PyGame no seu computador. Remova ou altere o código para gerar o seu próprio vídeo. Não se esqueça de criar funções para facilitar o entendimento do seu vídeo. Você pode (mas não precisa!) salvar o seu vídeo em um formato mp4, para mostrar sua obra no fórum da disciplina. Para isso, antes de salvar, você deve instalar o software ffmpeg que você pode baixar de https://ffmpeg.org/download.html. ''' video = [] for i in range(100): fundo = NumPymagem(ALTURA, LARGURA, GREY) fundo.pinte_disco(ox, oy, i + 3, BLACK) fundo.pinte_disco(ox, oy, i, WHITE) video.append(fundo) ret1 = ret = NumPymagem(ALTURA, LARGURA, WHITE) for i in range(ALTURA // 3 * 2): ret = NumPymagem(ALTURA, LARGURA, ret1.data) if (ox - i) % 2 == 0: ret.pinte_retangulo(0 + i, 0 + i, ALTURA - i, LARGURA - i, BLACK) else: ret.pinte_retangulo(0 + i, 0 + i, ALTURA - i, LARGURA - i, WHITE) ret1 = ret video.append(ret) for i in range(ALTURA): if GREY + i in range(0, WHITE + 1): ult = video[-1].crop() ult.pinte_retangulo(ox - i, oy - oy // 3 - i, ox + i, oy + oy // 3 + i, GREY + i) video.append(ult) for i in range(100): fundo = NumPymagem(ALTURA, LARGURA, WHITE) raio = random.choice(range(30)) cor = random.choice(range(0, 250)) orix = random.choice(range(0, ALTURA)) oriy = random.choice(range(0, LARGURA)) fundo.pinte_disco(orix, oriy, raio, cor) video.append(fundo) x = random.choice(range(28, ALTURA // 2)) for i in range(20): stopr = NumPymagem(ALTURA, LARGURA, WHITE) stopr.pinte_disco(x + ox, x + oy, ALTURA // 5, GREY) video.append(stopr) for i in range(2 * x): if GREY - i in range(0, WHITE + 1): stopr = NumPymagem(ALTURA, LARGURA, WHITE) stopr.pinte_disco(x - i // 2 + ox, x - i // 2 + oy, ALTURA // 5, GREY - i) video.append(stopr) for i in range(ALTURA // 5): stopr = NumPymagem(ALTURA, LARGURA, WHITE) stopr.pinte_disco(ox, oy, ALTURA // 5 - i, BLACK) video.append(stopr) for i in range(ALTURA // 2): if WHITE - 2 * i in range(0, WHITE + 1): fundo = NumPymagem(ALTURA, LARGURA, WHITE) fundo.pinte_disco(ox, oy, i, WHITE - 2 * i) video.append(fundo) img1 = NumPymagem(ALTURA, LARGURA, WHITE) for i in range(ALTURA): if WHITE - i in range(0, WHITE + 1) and BLACK + i in range( 0, WHITE + 1): img = NumPymagem(ALTURA, LARGURA, img1.data) if (ox - i) % 2 == 0: img.pinte_disco(ox, oy, ALTURA // 2 - i, BLACK + i) else: img.pinte_disco(ox, oy, ALTURA // 2 - i, WHITE - i) img1 = img video.append(img) for i in range(ALTURA // 2): if GREY + i in range(0, WHITE + 1): fundo = NumPymagem(ALTURA, LARGURA, WHITE) fundo.pinte_disco(ox, oy, ALTURA // 2 - i, GREY + i) video.append(fundo) for i in range(ALTURA // 2): if GREY - i in range(0, WHITE + 1): fundo = NumPymagem(ALTURA, LARGURA, WHITE) fundo.pinte_disco(ox + i, oy, 10, GREY - i) fundo.pinte_disco(ox, oy + i, 10, GREY - i) fundo.pinte_disco(ox, oy - i, 10, GREY - i) fundo.pinte_disco(ox - i, oy, 10, GREY - i) fundo.pinte_disco(ox + i, oy + i, 10, GREY - i) fundo.pinte_disco(ox - i, oy - i, 10, GREY - i) fundo.pinte_disco(ox + i, oy - i, 10, GREY - i) fundo.pinte_disco(ox - i, oy + i, 10, GREY - i) video.append(fundo) for i in range(ALTURA): if WHITE - 2 * i in range(0, WHITE + 1) and BLACK + 2 * i in range( 0, WHITE + 1): fundo = NumPymagem(ALTURA, LARGURA, WHITE - 2 * i) fundo.pinte_disco(ALTURA - i, oy, 10, BLACK + 2 * i) video.append(fundo) for i in range(40): fundo = NumPymagem(ALTURA, LARGURA, BLACK) fundo.pinte_disco(0, oy, i * 5, WHITE) video.append(fundo) for i in range(ALTURA): fundo = NumPymagem(ALTURA, LARGURA, GREY) fundo.pinte_disco(ox, oy, ALTURA - i, BLACK) fundo.pinte_disco(ox, oy, ALTURA - 3 - i, WHITE) video.append(fundo) mostre = True if mostre: mostre_video(video) salve = False if salve: print("Salvando vídeo") salve_video(video)
def main(): ''' (None) -> None Escreva o seu programa que cria o vídeo como descrito no enunciado. O código abaixo serve para ilustrar como usar a função mostre_video() que recebe uma lista com NumPymagens e as mostra em um vídeo na tela do seu computador usando PyGame. Por isso lembre-se de seguir as instruções para instalar PyGame no seu computador. Remova ou altere o código para gerar o seu próprio vídeo. Não se esqueça de criar funções para facilitar o entendimento do seu vídeo. Você pode (mas não precisa!) salvar o seu vídeo em um formato mp4, para mostrar sua obra no fórum da disciplina. Para isso, antes de salvar, você deve instalar o software ffmpeg que você pode baixar de https://ffmpeg.org/download.html. ''' video = [] preto = NumPymagem(ALTURA, LARGURA, BLACK) print(f"Está compatível com numpymutil: {type(preto.data) is np.ndarray}") cor = BLACK for i in range(90): preto = NumPymagem(ALTURA, LARGURA, BLACK) cor = (cor+2)%WHITE preto.pinte_disco(cor, 5, ALTURA/2, LARGURA/2) video.append(preto) elip = preto.crop() for lin in range(ALTURA): elip=elip.crop() for col in range(LARGURA): if 28 <= ((lin - ALTURA/2)/2.5)**2 + ((col - LARGURA/2)/10)**2 <= 30: elip[lin, col] = 250 video.append(elip) elip2 = elip.crop() for lin in range(ALTURA): elip2=elip2.crop() for col in range(LARGURA): if 28 <= ((lin - ALTURA/2)/10)**2 + ((col - LARGURA/2)/2.5)**2 <=30: elip2[lin, col] = 250 video.append(elip2) elip3 = elip2.crop() theta = np.radians(45) for i in range(ALTURA): elip3=elip3.crop() for j in range(LARGURA): if 28 <= (((j-LARGURA/2)*np.cos(theta) - (i-ALTURA/2)*np.sin(theta))/10)**2 + (((j-LARGURA/2)*np.sin(theta) + (i-ALTURA/2)*np.cos(theta))/2.5)**2 <= 30: elip3[i,j] = 250 video.append(elip3) elip4 = elip3.crop() theta = np.radians(135) for i in range(ALTURA): elip4=elip4.crop() for j in range(LARGURA): if 28 <= (((j-LARGURA/2)*np.cos(theta) - (i-ALTURA/2)*np.sin(theta))/10)**2 + (((j-LARGURA/2)*np.sin(theta) + (i-ALTURA/2)*np.cos(theta))/2.5)**2 <= 30: elip4[i,j] = 250 video.append(elip4) circ = elip4.crop() elip_preto = elip4.crop()*(-1/250) fundo_branco = elip_preto.crop() for i in range(ALTURA): for j in range(LARGURA): if fundo_branco[i,j] == 0: fundo_branco[i,j] = 1 if fundo_branco[i,j] == -1: fundo_branco[i,j] = 0 for i in range(250): elip4 += elip_preto + fundo_branco video.append(elip4) mostre = True if mostre: mostre_video(video) salve = False if salve: print("Salvando vídeo") salve_video(video)
def main(): ''' (None) -> None Escreva o seu programa que cria o vídeo como descrito no enunciado. O código abaixo serve para ilustrar como usar a função mostre_video() que recebe uma lista com NumPymagens e as mostra em um vídeo na tela do seu computador usando PyGame. Por isso lembre-se de seguir as instruções para instalar PyGame no seu computador. Remova ou altere o código para gerar o seu próprio vídeo. Não se esqueça de criar funções para facilitar o entendimento do seu vídeo. Você pode (mas não precisa!) salvar o seu vídeo em um formato mp4, para mostrar sua obra no fórum da disciplina. Para isso, antes de salvar, você deve instalar o software ffmpeg que você pode baixar de https://ffmpeg.org/download.html. ''' #----------------------------------------------------------------------- # CRIE A SEGUIR O SEU VÍDEO video = [] preto = NumPymagem(ALTURA, LARGURA, BLACK) branco = NumPymagem(ALTURA, LARGURA, WHITE) print(f"Está compatível com numpymutil: {type(preto.data) is np.ndarray}") cor = BLACK for i in range(60): # gera 2s de fundo preto video.append(preto) for i in range(60): # muda fundo para branco, gradualmente cor = (cor + 3) % WHITE cinza = NumPymagem(ALTURA, LARGURA, cor) video.append(cinza) for i in range(60): # mostra 2s de fundo branco video.append(branco) for i in range(60): # volta para preto cor = (cor - 3) % WHITE cinza = NumPymagem(ALTURA, LARGURA, cor) video.append(cinza) for i in range(COMP): inicio = NumPymagem(ALTURA, LARGURA, BLACK) inicio.pinte_disco(255, 1, int(Y[i]), int(X[i])) if i < COMP - 2: inicio.pinte_disco(255 / 1.5, 1, int(Y[i + 1]), int(X[i + 1])) inicio.pinte_disco(255 / 2, 1, int(Y[i + 2]), int(X[i + 2])) video.append(inicio) for i in range(COMP): inicio = NumPymagem(ALTURA, LARGURA, BLACK) if i < COMP - 2: inicio.pinte_disco(255 / 1.25, 2, int(V[i + 1]), int(U[i + 1])) inicio.pinte_disco(255 / 1.5, 2, int(V[i + 2]), int(U[i + 2])) inicio.pinte_disco(255, 2, int(V[i]), int(U[i])) video.append(inicio) print(len((video))) #----------------------------------------------------------------------- # A CRIAÇÃO DO SEU VÏDEO TERMINA AQUI #------------------------------------------------------------------ # selecione `True` ou `False` para as variáveis `mostre` e `salve` # para mostrar o vídeo mostre deve ser True, em caso contrário False mostre = True # DEVE SER True no momento da entrega do EP # para gravar o vídeo salve deve ser True, em caso contrário False salve = False #------------------------------------------------------------------ # deste ponto em diante, nada deve ser alterado if mostre: mostre_video(video) if salve: print("Salvando vídeo") salve_video(video)