[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/pythonprobr/pythonbirds/simples/atores.py [Back]  [Original]

# -*- coding: utf-8 -*-

from __future__ import unicode_literals

import math

DESTRUIDO = 'Destruido'
ATIVO = 'Ativo'
GRAVIDADE = 10  # m/s^2


class Ator():
    """
    Classe que representa um ator. Ele representa um ponto cartesiano na tela.
    """
    _caracter_ativo = 'A'
    _caracter_destruido = ' '

    def __init__(self, x=0, y=0):
        """
        Mtodo de inicializao da classe. Deve inicializar os parmetros x, y, caracter e status

        :param x: Posio horizontal inicial do ator
        :param y: Posio vertical inicial do ator
        """
        self.y = y
        self.x = x
        self.status = ATIVO

    def caracter(self):
        return self._caracter_ativo if self.status == ATIVO else self._caracter_destruido

    def calcular_posicao(self, tempo):
        """
        Mtodo que calcula a posio do ator em determinado tempo.
        Deve-se imaginar que o tempo comea em 0 e avana de 0,01 segundos

        :param tempo: o tempo do jogo
        :return: posio x, y do ator
        """
        return 1, 1

    def colidir(self, outro_ator, intervalo=1):
        """
        Mtodo que executa lgica de coliso entre dois atores.
        S deve haver coliso se os dois atores tiverem seus status ativos.
        Para coliso,  considerado um quadrado, com lado igual ao parmetro intervalo, em volta do ponto onde se
        encontra o ator. Se os atores estiverem dentro desse mesmo quadrado, seus status devem ser alterados para
        destruido, seus caracteres para destruido tambm.

        :param outro_ator: Ator a ser considerado na coliso
        :param intervalo: Intervalo a ser considerado
        :return:
        """
        pass


class Obstaculo(Ator):
    pass


class Porco(Ator):
    pass


class DuploLancamentoExcecao(Exception):
    pass


class Passaro(Ator):
    velocidade_escalar = 10

    def __init__(self, x=0, y=0):
        """
        Mtodo de inicializao de pssaro.

        Deve chamar a inicializao de ator. Alm disso, deve armazenar a posio inicial e incializar o tempo de
        lanamento e angulo de lanamento

        :param x:
        :param y:
        """
        super().__init__(x, y)
        self._x_inicial = x
        self._y_inicial = y
        self._tempo_de_lancamento = None
        self._angulo_de_lancamento = None  # radianos

    def foi_lancado(self):
        """
        Mtodo que retorna verdaeira se o pssaro j foi lanado e falso caso contrrio

        :return: booleano
        """
        return True

    def colidir_com_chao(self):
        """
        Mtodo que executa lgica de coliso com o cho. Toda vez que y for menor ou igual a 0,
        o status dos Passaro deve ser alterado para destruido, bem como o seu caracter

        """
        pass

    def calcular_posicao(self, tempo):
        """
        Mtodo que clcula a posio do passaro de acordo com o tempo.

        Antes do lanamento o pssaro deve retornar o valor de sua posio inicial

        Depois do lanamento o pssaro deve calcular de acordo com sua posio inicial, velocidade escalar,
        ngulo de lancamento, gravidade (constante GRAVIDADE) e o tempo do jogo.

        Aps a coliso, ou seja, ter seus status destruido, o pssaro deve apenas retornar a ltima posio calculada.

        :param tempo: tempo de jogo a ser calculada a posio
        :return: posio x, y
        """
        return 1, 1


    def lancar(self, angulo, tempo_de_lancamento):
        """
        Lgica que lana o pssaro. Deve armazenar o ngulo e o tempo de lanamento para posteriores clculo.
        O ngulo  passado em graus e deve ser transformado em radianos

        :param angulo:
        :param tempo_de_lancamento:
        :return:
        """
        pass


class PassaroAmarelo(Passaro):
    pass


class PassaroVermelho(Passaro):
    pass

Web Proxy Viewer  |  New URL  |  Original Page