diff --git a/oo/__init__.py b/oo/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/oo/carro.py b/oo/carro.py new file mode 100644 index 000000000..aa7ae80cb --- /dev/null +++ b/oo/carro.py @@ -0,0 +1,129 @@ + + + +""" +Você deve criar uma classe carro que vai possuir +dois atributos compostos por outras duas classes: + +1) Motor +2) Direção + +O Motor terá a responsabilidade de controlar a velocidade. +Ele oferece os seguintes atributos: +1) Atributo de dado velocidade +2) Método acelerar, que deverá incremetar a velocidade de uma unidade +3) Método frear que deverá decrementar a velocidade em duas unidades + +A Direção terá a responsabilidade de controlar a direção. Ela oferece +os seguintes atributos: +1) Valor de diração com valores possíveis: Norte, Sul, Leste, Oeste. +2) Método girar_a_direita +2) Método girar_a_esquerda + + N +O L + S + + Exemplo: + >>> # Testando motor + >>> motor = Motor() + >>> motor.velocidade + 0 + >>> motor.acelerar() + >>> motor.velocidade + 1 + >>> motor.acelerar() + >>> motor.velocidade + 2 + >>> motor.acelerar() + >>> motor.velocidade + 3 + >>> motor.frear() + >>> motor.velocidade + 1 + >>> motor.frear() + >>> motor.velocidade + 0 + >>> # Testando Direcao + >>> direcao = Direcao() + >>> direcao.valor + 'Norte' + >>> direcao.girar_a_direita() + >>> direcao.valor + 'Leste' + >>> direcao.girar_a_direita() + >>> direcao.valor + 'Sul' + >>> direcao.girar_a_direita() + >>> direcao.valor + 'Oeste' + >>> direcao.girar_a_direita() + >>> direcao.valor + 'Norte' + >>> direcao.girar_a_esquerda() + >>> direcao.valor + 'Oeste' + >>> direcao.girar_a_esquerda() + >>> direcao.valor + 'Sul' + >>> direcao.girar_a_esquerda() + >>> direcao.valor + 'Leste' + >>> direcao.girar_a_esquerda() + >>> direcao.valor + 'Norte' + >>> carro = Carro(direcao, motor) + >>> carro.calcular_velocidade() + 0 + >>> carro.acelerar() + >>> carro.calcular_velocidade() + 1 + >>> carro.acelerar() + >>> carro.calcular_velocidade() + 2 + >>> carro.frear() + >>> carro.calcular_velocidade() + 0 + >>> carro.calcular_direcao() + 'Norte' + >>> carro.girar_a_direita() + >>> carro.calcular_direcao() + 'Leste' + >>> carro.girar_a_esquerda() + >>> carro.calcular_direcao() + 'Norte' + >>> carro.girar_a_esquerda() + >>> carro.calcular_direcao() + 'Oeste' +""" +NORTE = 'Norte' +SUL = 'Sul' +LESTE = 'Leste' +OESTE = 'Oeste' + +class Direcao: + rotacao_a_direita_dct={NORTE: LESTE, LESTE:SUL, SUL:OESTE, OESTE:NORTE} + rotacao_a_esquerda_dct = {NORTE:OESTE, OESTE:SUL, SUL:LESTE, LESTE:NORTE} + def __init__(self): + self.valor = NORTE + def girar_a_direita(self): + self.valor = self.rotacao_a_direita_dct[self.valor] + def girar_a_esquerda(self): + self.valor= self.rotacao_a_esquerda_dct[self.valor] + + + + + + +class Motor: + def __init__(self): + self.velocidade = 0 + def acelerar(self): + self.velocidade += 1 + def frear(self): + self.velocidade -= 2 + self.velocidade = max(0, self.velocidade) + + + diff --git a/oo/pessoa.py b/oo/pessoa.py new file mode 100644 index 000000000..fdb395a14 --- /dev/null +++ b/oo/pessoa.py @@ -0,0 +1,42 @@ +class Pessoa: + olhos = 2 + + def __init__(self, *filhos, nome=None, idade=None, peso=None, sexo=None): + self.sexo = sexo + self.peso = peso + self.idade = idade + self.nome = nome + self.filhos = list(filhos) + + def cumprimentar(self): + return f'Ola!!!{id(self)}' + @staticmethod + def metodo_estatico(): + return 42 + @ classmethod + def atributo_e_metodo(cls): + return f'{cls} - olhos {cls.olhos}' + + +if __name__ == '__main__': + josue = Pessoa(nome='Josue') + jose = Pessoa(josue, nome='Josue') + + print(Pessoa.cumprimentar(jose)) + print(id(jose)) + print(jose.cumprimentar()) + print(jose.nome) + print(jose.idade) + for filho in jose.filhos: + print(filho.nome) + jose.sobrenome = 'Silva' + jose.olhos = 1 + print(jose.__dict__) + print(josue.__dict__) + Pessoa.olhos = 3 + print(Pessoa.olhos) + print(jose.olhos) + print(josue.olhos) + print(id(Pessoa.olhos), id(josue.olhos), id(jose.olhos)) + print(Pessoa.metodo_estatico(), jose.metodo_estatico()) + print(Pessoa.atributo_e_metodo(), jose.atributo_e_metodo()) \ No newline at end of file diff --git a/placa_grafica_tkinter.py b/placa_grafica_tkinter.py index 318542e65..a0a25ff76 100644 --- a/placa_grafica_tkinter.py +++ b/placa_grafica_tkinter.py @@ -1,13 +1,13 @@ # coding: utf-8 +import math import time +from os import path from tkinter import PhotoImage, NW, Tk, Canvas from tkinter.constants import ALL -import math -from os import path -import atores -from fase import Fase, EM_ANDAMENTO, VITORIA +import atores from atores import PassaroVermelho, PassaroAmarelo, Porco, Obstaculo +from fase import Fase, EM_ANDAMENTO, VITORIA ALTURA_DA_TELA = 600 # px