def teste_status(self): fase = Fase() porcos = [PorcoFake(1, 1) for _ in range(2)] passaros = [PassaroFake(1, 1) for _ in range(2)] fase.adicionar_porco(*porcos) fase.adicionar_passaro(*passaros) self.assertEqual(EM_ANDAMENTO, fase.status()) for ator in porcos + passaros: ator.status = DESTRUIDO self.assertEqual( VITORIA, fase.status(), 'Sem porcos ativos o jogo deveria terminar com ' 'vitória') fase.adicionar_obstaculo(ObstaculoFake()) self.assertEqual(VITORIA, fase.status(), 'Obstáculo não interfere para definir vitória') porco = PorcoFake() fase.adicionar_porco(porco) self.assertEqual( DERROTA, fase.status(), 'Com Porco ativo e sem pássaro para lançar, o jogo ' 'deveria acabar em derrota') fase.adicionar_passaro(PassaroFake()) self.assertEqual( EM_ANDAMENTO, fase.status(), 'Com Porco ativo e com pássaro para lançar, o jogo ' 'não deveria acabar') porco.status = DESTRUIDO self.assertEqual(VITORIA, fase.status(), 'Sem porco ativo, o jogo deveria acabar com vitória')
def teste_acabou_com_porcos_e_passaros(self): fase = Fase() porcos = [PorcoFake(1, 1) for _ in range(2)] # criando 2 porcos passaros = [PassaroFake(1, 1) for _ in range(2)] # criando 2 pássaros fase.adicionar_porco(*porcos) fase.adicionar_passaro(*passaros) self.assertEqual(EM_ANDAMENTO, fase.status()) for ator in porcos + passaros: ator.status = DESTRUIDO self.assertEqual(VITORIA, fase.status()) fase.adicionar_obstaculo(Obstaculo()) self.assertEqual(VITORIA, fase.status(), 'Obstáculo não interfere no fim do jogo') fase.adicionar_porco(PorcoFake()) self.assertEqual( DERROTA, fase.status(), 'Com Porco ativo e sem pássaro para lançar, o jogo ' 'deveria acabar') fase.adicionar_passaro(PassaroFake()) self.assertEqual( EM_ANDAMENTO, fase.status(), 'Com Porco ativo e com pássaro para lançar, o jogo ' 'não deveria acabar')
def teste_status(self): fase = Fase() porcos = [Porco(1, 1) for i in range(2)] passaros = [PassaroAmarelo(1, 1) for i in range(2)] fase.adicionar_porco(*porcos) fase.adicionar_passaro(*passaros) self.assertEqual('Jogo em andamento.', fase.status(0)) self.assertEqual('Jogo em andamento.', fase.status(2.9)) self.assertEqual('Jogo em andamento.', fase.status(3)) for passaro, porco in zip(passaros, porcos): passaro.colidir(porco, 3) self.assertEqual('Jogo em andamento.', fase.status(0)) self.assertEqual('Jogo em andamento.', fase.status(2.9)) self.assertEqual('Jogo em encerrado. Você ganhou!', fase.status(3), 'Sem porcos ativos o jogo deveria terminar com vitória') fase.adicionar_obstaculo(Obstaculo()) self.assertEqual('Jogo em encerrado. Você ganhou!', fase.status(3), 'Obstáculo não interfere para definir vitória') porco = Porco() fase.adicionar_porco(porco) self.assertEqual('Jogo em encerrado. Você perdeu!', fase.status(3), 'Com Porco ativo e sem pássaro para lançar, o jogo deveria acabar em derrota') fase.adicionar_passaro(PassaroAmarelo()) self.assertEqual('Jogo em andamento.', fase.status(3), 'Com Porco ativo e com pássaro para lançar, o jogo não deveria acabar') porco.colidir(porco, 3) self.assertEqual('Jogo em encerrado. Você ganhou!', fase.status(3), 'Sem porco ativo, o jogo deveria acabar com vitória')
def teste_status(self): fase = Fase() porcos = [Porco(1, 1) for i in range(2)] passaros = [PassaroAmarelo(1, 1) for i in range(2)] fase.adicionar_porco(*porcos) fase.adicionar_passaro(*passaros) self.assertEqual(EM_ANDAMENTO, fase.status()) for passaro, porco in zip(passaros, porcos): passaro.colidir(porco, 3) self.assertEqual(VITORIA, fase.status(), 'Sem porcos ativos o jogo deveria terminar com vitória') fase.adicionar_obstaculo(Obstaculo()) self.assertEqual(VITORIA, fase.status(), 'Obstáculo não interfere para definir vitória') porco = Porco() fase.adicionar_porco(porco) self.assertEqual(DERROTA, fase.status(), 'Com Porco ativo e sem pássaro para lançar, o jogo deveria acabar em derrota') fase.adicionar_passaro(PassaroAmarelo()) self.assertEqual(EM_ANDAMENTO, fase.status(), 'Com Porco ativo e com pássaro para lançar, o jogo não deveria acabar') porco.colidir(porco, 3) self.assertEqual(VITORIA, fase.status(), 'Sem porco ativo, o jogo deveria acabar com vitória')
def teste_acabou_com_porcos_e_passaros(self): fase = Fase() porcos = [Porco(1, 1) for i in range(2)] # criando 2 porcos passaros = [PassaroAmarelo(1, 1) for i in range(2)] # criando 2 pássaros fase.adicionar_porco(*porcos) fase.adicionar_passaro(*passaros) self.assertEqual(EM_ANDAMENTO, fase.status) # colidindo cada passaro com um porco no tempo 3 for passaro, porco in zip(passaros, porcos): passaro.colidir(porco, 3) self.assertEqual(VITORIA, fase.status) fase.adicionar_obstaculo(Obstaculo()) self.assertEqual(VITORIA, fase.status, 'Obstáculo não interfere no fim do jogo') fase.adicionar_porco(Porco()) self.assertEqual( DERROTA, fase.status, 'Com Porco ativo e sem pássaro para lançar, o jogo deveria acabar') fase.adicionar_passaro(PassaroAmarelo()) self.assertEqual( EM_ANDAMENTO, fase.status, 'Com Porco ativo e com pássaro para lançar, o jogo não deveria acabar' )
def teste_acabou_com_porcos_e_passaros(self): fase = Fase() porcos = [Porco(1, 1) for i in range(2)] # criando 2 porcos passaros = [PassaroAmarelo(1, 1) for i in range(2)] # criando 2 pássaros fase.adicionar_porco(*porcos) fase.adicionar_passaro(*passaros) self.assertFalse(fase.acabou(0)) self.assertFalse(fase.acabou(2.9)) self.assertFalse(fase.acabou(3)) # colidingo cada passaro com um porco no tempo 3 for passaro, porco in zip(passaros, porcos): passaro.colidir(porco, 3) self.assertFalse(fase.acabou(0)) self.assertFalse(fase.acabou(2.9)) self.assertTrue(fase.acabou(3)) fase.adicionar_obstaculo(Obstaculo()) self.assertTrue(fase.acabou(3), 'Obstáculo não interfere no fim do jogo') fase.adicionar_porco(Porco()) self.assertTrue(fase.acabou(3), 'Com Porco ativo e sem pássaro para lançar, o jogo deveria acabar') fase.adicionar_passaro(PassaroAmarelo()) self.assertFalse(fase.acabou(3), 'Com Porco ativo e com pássaro para lançar, o jogo não deveria acabar')
def teste_adicionar_obstaculo(self): fase = Fase() self.assertListEqual([], fase._obstaculos) obstaculo = Obstaculo() fase.adicionar_obstaculo(obstaculo) self.assertListEqual([obstaculo], fase._obstaculos) obstaculo1, obstaculo2 = Obstaculo(), Obstaculo() fase.adicionar_obstaculo(obstaculo1, obstaculo2) self.assertListEqual([obstaculo, obstaculo1, obstaculo2], fase._obstaculos)
def criar_fase_exemplo(multiplicador=1): fase_exemplo = Fase(1 if multiplicador == 1 else 32) passaros = [PassaroVermelho(3 * multiplicador, 3 * multiplicador), PassaroAmarelo(3 * multiplicador, 3 * multiplicador), PassaroAmarelo(3 * multiplicador, 3 * multiplicador)] porcos = [Porco(78 * multiplicador, multiplicador), Porco(70 * multiplicador, multiplicador)] obstaculos = [Obstaculo(31 * multiplicador, 10 * multiplicador)] fase_exemplo.adicionar_passaro(*passaros) fase_exemplo.adicionar_porco(*porcos) fase_exemplo.adicionar_obstaculo(*obstaculos) return fase_exemplo
def criar_fase_exemplo(): fase_exemplo = Fase() passaros = [PassaroVermelho(3, 3), PassaroAmarelo(3, 3), PassaroAmarelo(3, 3)] porcos = [Porco(78, 1), Porco(70, 1)] obstaculos = [Obstaculo(31, 10)] fase_exemplo.adicionar_passaro(*passaros) fase_exemplo.adicionar_porco(*porcos) fase_exemplo.adicionar_obstaculo(*obstaculos) fase_exemplo.lancar(45, 1) fase_exemplo.lancar(63, 3) fase_exemplo.lancar(23, 4) for i in range(86): fase_exemplo.calcular_pontos(i / 10)
def criar_fase_exemplo(): fase_exemplo = Fase() passaros = [PassaroVermelho(3, 3), PassaroAmarelo(3, 3), PassaroAmarelo(3, 3)] porcos = [Porco(78, 1), Porco(70, 1)] obstaculos = [Obstaculo(31, 10)] fase_exemplo.adicionar_passaro(*passaros) fase_exemplo.adicionar_porco(*porcos) fase_exemplo.adicionar_obstaculo(*obstaculos) fase_exemplo.lancar(45, 1) fase_exemplo.lancar(63, 3) fase_exemplo.lancar(23, 4) for i in range(86): fase_exemplo.calcular_pontos(i / 10) return fase_exemplo
def teste_acabou_com_porcos_e_passaros(self): fase = Fase() porcos = [Porco(1, 1) for i in range(2)] # criando 2 porcos passaros = [PassaroAmarelo(1, 1) for i in range(2)] # criando 2 pássaros fase.adicionar_porco(*porcos) fase.adicionar_passaro(*passaros) self.assertEqual(EM_ANDAMENTO, fase.status()) # colidindo cada passaro com um porco no tempo 3 for passaro, porco in zip(passaros, porcos): passaro.colidir(porco, 3) self.assertEqual(VITORIA, fase.status()) fase.adicionar_obstaculo(Obstaculo()) self.assertEqual(VITORIA, fase.status(), 'Obstáculo não interfere no fim do jogo') fase.adicionar_porco(Porco()) self.assertEqual(DERROTA, fase.status(), 'Com Porco ativo e sem pássaro para lançar, o jogo deveria acabar') fase.adicionar_passaro(PassaroAmarelo()) self.assertEqual(EM_ANDAMENTO, fase.status(), 'Com Porco ativo e com pássaro para lançar, o jogo não deveria acabar')
from random import randint if __name__ == '__main__': fase = Fase(intervalo_de_colisao=32) # Adicionar Pássaros Amarelos for i in range(80): fase.adicionar_passaro(PassaroAmarelo(30, 30)) # Obstaculos theta = 270 h = 12 k = 7 step = 32 r = 50 while theta < 480: x = 600 + (h + r * math.cos(theta)) y = (k + r * math.sin(theta)) fase.adicionar_obstaculo(Obstaculo(x, y)) theta += 32 # Porcos for i in range(30, 300, 32): x = randint(590, 631) y = randint(0, 21) fase.adicionar_porco(Porco(x, y)) rodar_fase(fase)
tela.after(passo, _animar) def rodar_fase(fase): root.title("Python Birds") root.geometry("800x600") root.resizable(0, 0) stage = Canvas(root, width=800, height=ALTURA_DA_TELA) multiplicador = 10 PassaroAmarelo.velocidade_escalar *= multiplicador PassaroVermelho.velocidade_escalar *= multiplicador atores.GRAVIDADE = 100 animar(root, stage, fase) if __name__ == '__main__': fase = Fase(intervalo_de_colisao=32) passaros = [ PassaroVermelho(30, 30), PassaroAmarelo(30, 30), PassaroAmarelo(30, 30) ] porcos = [Porco(750, 1), Porco(700, 1)] obstaculos = [Obstaculo(310, 100)] fase.adicionar_obstaculo(*obstaculos) fase.adicionar_passaro(*passaros) fase.adicionar_porco(*porcos) rodar_fase(fase)
import sys project_dir = path.dirname(__file__) project_dir = path.join('..') sys.path.append(project_dir) from atores import PassaroAmarelo, PassaroVermelho, Obstaculo, Porco from fase import Fase from placa_grafica_tkinter import rodar_fase if __name__ == '__main__': fase = Fase(intervalo_de_colisao=10) # Adicionar Pássaros Vermelhos for i in range(5): fase.adicionar_passaro(PassaroVermelho(30, 30)) # Adicionar Pássaros Amarelos for i in range(30): fase.adicionar_passaro(PassaroAmarelo(30, 30)) # Obstaculos for i in range(30, 480, 32): fase.adicionar_obstaculo(Obstaculo(300, i)) # Porcos for i in range(30, 300, 32): fase.adicionar_porco(Porco(600, i)) rodar_fase(fase)
expected = [Ponto(31, 11, 'v'), Ponto(57, 30, 'A'), Ponto(69, 2, 'a'), Ponto(31, 10, ' '), Ponto(78, 1, '@'), Ponto(70, 1, '+')] self.assertListEqual(expected, fase_exemplo.calcular_pontos(7)) expected = [Ponto(31, 11, 'v'), Ponto(77, 2, 'a'), Ponto(69, 2, 'a'), Ponto(31, 10, ' '), Ponto(78, 1, '+'), Ponto(70, 1, '+')] self.assertListEqual(expected, fase_exemplo.calcular_pontos(8.5)) self.assertFalse(fase_exemplo.acabou(8.3)) self.assertTrue(fase_exemplo.acabou(8.5)) fase_exemplo = Fase() passaros = [PassaroVermelho(3, 3), PassaroAmarelo(3, 3), PassaroAmarelo(3, 3)] porcos = [Porco(78, 1), Porco(70, 1)] obstaculos = [Obstaculo(31, 10)] fase_exemplo.adicionar_passaro(*passaros) fase_exemplo.adicionar_porco(*porcos) fase_exemplo.adicionar_obstaculo(*obstaculos) fase_exemplo.lancar(45, 1) fase_exemplo.lancar(63, 3) fase_exemplo.lancar(23, 4) for i in range(86): fase_exemplo.calcular_pontos(i / 10) if __name__ == '__main__': placa_grafica.animar(fase_exemplo)
# -*- coding: utf-8 -*- from os import path import sys project_dir = path.dirname(__file__) project_dir = path.join('..') sys.path.append(project_dir) from atores import PassaroAmarelo, PassaroVermelho, Obstaculo, Porco from fase import Fase from placa_grafica_tkinter import rodar_fase if __name__ == '__main__': fase = Fase(intervalo_de_colisao=32) # Adicionar Pássaros Vermelhos for i in range(5): fase.adicionar_passaro(PassaroVermelho(30, 30)) # Adicionar Pássaros Amarelos for i in range(30): fase.adicionar_passaro(PassaroAmarelo(30, 30)) # Obstaculos for i in range(30, 480, 32): fase.adicionar_obstaculo(Obstaculo(300, i)) # Porcos for i in range(30, 300, 32): fase.adicionar_porco(Porco(600, i)) rodar_fase(fase)
tela.bind_all('3', _finalizar) tela.bind_all('<Escape>', _finalizar) tela.mainloop() tela.after(passo, _animar) def rodar_fase(fase): root.title("Python Birds") root.geometry("800x600") root.resizable(0, 0) stage = Canvas(root, width=800, height=ALTURA_DA_TELA) multiplicador = 10 PassaroAmarelo.velocidade_escalar *= multiplicador PassaroVermelho.velocidade_escalar *= multiplicador atores.GRAVIDADE = 100 animar(root, stage, fase) if __name__ == '__main__': fase = Fase(intervalo_de_colisao=32) passaros = [PassaroVermelho(30, 30), PassaroAmarelo(30, 30), PassaroAmarelo(30, 30)] porcos = [Porco(750, 1), Porco(700, 1)] obstaculos = [Obstaculo(310, 100)] fase.adicionar_obstaculo(*obstaculos) fase.adicionar_passaro(*passaros) fase.adicionar_porco(*porcos) rodar_fase(fase)
# -*- coding: utf-8 -*- from atores import PassaroVermelho, PassaroAmarelo, Porco, Obstaculo from fase import Fase import placa_grafica fase_exemplo = Fase() passaros = [PassaroVermelho(3, 3), PassaroAmarelo(3, 3), PassaroAmarelo(3, 3)] porcos = [Porco(78, 1), Porco(70, 1)] obstaculos = [Obstaculo(31, 10)] fase_exemplo.adicionar_passaro(*passaros) fase_exemplo.adicionar_porco(*porcos) fase_exemplo.adicionar_obstaculo(*obstaculos) # Solução para ganhar # fase_exemplo.lancar(45, 1) # fase_exemplo.lancar(63, 3) # fase_exemplo.lancar(23, 4) if __name__ == '__main__': placa_grafica.animar(fase_exemplo)