Beispiel #1
0
    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_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')
Beispiel #3
0
    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'
        )
Beispiel #4
0
    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')
Beispiel #5
0
    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')
Beispiel #6
0
    def teste_adicionar_porco(self):
        fase = Fase()
        self.assertListEqual([], fase._porcos)
        porco = Porco()
        fase.adicionar_porco(porco)
        self.assertListEqual([porco], fase._porcos)

        porco1, porco2 = Porco(), Porco()
        fase.adicionar_porco(porco1, porco2)
        self.assertListEqual([porco, porco1, porco2], fase._porcos)
Beispiel #7
0
 def teste_intervalo_de_colisao_nao_padrao(self):
     '''
     Método que testa se o intervalo de colisão da Fase é repassado aos atores. valor testado: 31
     '''
     fase = Fase(30)
     passaro = PassaroAmarelo(1, 1)
     fase.adicionar_passaro(passaro)
     porco = Porco(31, 31)
     fase.adicionar_porco(porco)
     fase.calcular_pontos(0)
     self.assertEqual(DESTRUIDO, passaro.status(0))
     self.assertEqual(DESTRUIDO, porco.status(0))
Beispiel #8
0
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
Beispiel #9
0
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
Beispiel #10
0
    def teste_colisao(self):
        passaro_amarelo = PassaroAmarelo(1, 1)
        passaro_amarelo.lancar(
            45, 2)  # passaro lancado a 45 graus no tempo 2 segundos
        porco = Porco(4, 4)
        x_calculado, y_calculado = passaro_amarelo.calcular_posicao(2.12)
        self.assertEqual(4, x_calculado)
        self.assertEqual(3, y_calculado)

        passaro_amarelo.colidir(porco, 2.12)
        self.assertEqual(DESTRUIDO, passaro_amarelo.status(2.12))
        # Deve ficar parado onde colidiu para qualquer tempo maior ou igual que o de colisão
        x_calculado, y_calculado = passaro_amarelo.calcular_posicao(2.12)
        self.assertEqual(4, x_calculado)
        self.assertEqual(3, y_calculado)

        x_calculado, y_calculado = passaro_amarelo.calcular_posicao(1000)
        self.assertEqual(4, x_calculado)
        self.assertEqual(3, y_calculado)
Beispiel #11
0
    def teste_colisao(self):
        passaro_vermelho = PassaroVermelho(1, 1)
        passaro_vermelho.lancar(
            45, 2)  # passaro lancado a 45 graus no tempo 2 segundos

        porco = Porco(14, 10)
        x_calculado, y_calculado = passaro_vermelho.calcular_posicao(2.89)
        self.assertEqual(14, x_calculado)
        self.assertEqual(10, y_calculado)

        passaro_vermelho.colidir(porco, 2.89)
        self.assertEqual(DESTRUIDO, passaro_vermelho.status(2.89))

        # Deve ficar parado onde colidiu para qualquer tempo maior ou igual que o de colisão
        x_calculado, y_calculado = passaro_vermelho.calcular_posicao(2.89)
        self.assertEqual(14, x_calculado)
        self.assertEqual(10, y_calculado)

        x_calculado, y_calculado = passaro_vermelho.calcular_posicao(4)
        self.assertEqual(14, x_calculado)
        self.assertEqual(10, y_calculado)
Beispiel #12
0
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)
Beispiel #13
0
    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)
Beispiel #14
0
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)


    deltax_gambi=80
    # Adicionar Pássaros Amarelos
    for i in range(100):
        fase.adicionar_passaro(PassaroAmarelo(30, 30))

    # linhas verticais
    for i in range(30, 300, 32):
        fase.adicionar_porco(Porco(700-deltax_gambi, i))
        fase.adicionar_porco(Porco(200-deltax_gambi, i))

    # linhas horizontais
    for i in range(240, 680, 32):
        fase.adicionar_porco(Porco(i-deltax_gambi, 30))
        fase.adicionar_porco(Porco(i-deltax_gambi, 286))

    x0 = 210-deltax_gambi
    # losango
    meio = 160
    n = 9
    delta_x = 28
    delta_y = 12
    for i in range(1, n):
        fase.adicionar_porco(Porco(x0 + delta_x * i, meio + delta_y * i))
# -*- 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)
Beispiel #16
0
 def teste_status(self):
     porco = Porco()
     self.assert_ator_caracteres(porco, '@', '+')
 def teste_status(self):
     porco = Porco()
     self.assertEqual('@', porco.caracter())
     outro_ator_na_mesma_posicao = Ator()
     porco.colidir(outro_ator_na_mesma_posicao)
     self.assertEqual('+', porco.caracter())
Beispiel #18
0
# -*- 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)