Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Implementação de Aplicações Móveis e Jogos com Python - Aula 2

Implementação de Aplicações Móveis e Jogos com Python - Aula 2

Related Audiobooks

Free with a 30 day trial from Scribd

See all
  • Be the first to comment

  • Be the first to like this

Implementação de Aplicações Móveis e Jogos com Python - Aula 2

  1. 1. Implementação de Aplicações Móveis e Jogos com Python
  2. 2. Review  1ª Aula  Apresentação de Python  Cenário de Python em Mobile & Embedded  Ciclo de Desenvolvimento de linguagens interpretadas  Sintaxe de Python  Interpretador Interativo  Variáveis e Tipos  Strings  Listas e Tuplas  Dicionários  Laços  Funções
  3. 3. Orientação a Objetos com Python
  4. 4. Orientação a Objetos com Python  A estrutura de uma Classe class NomeDaClasse(object): def metodoUm(self, argumento1): self.atributo1 = argumento1 def metodoDois(self): print self.atributo1  Gerando uma instância MeuObjeto = NomeDaClasse()
  5. 5. Orientação a Objetos com Python  O método construtor class NomeDaClasse(object): def __init__(self, argumento1): print 'Fui inicializado!' self.atributo1 = argumento1 def metodoDois(self): print self.atributo1
  6. 6. Orientação a Objetos com Python  Atributos Privados e Protegidos  Não existe implementação que assegure isso  Convenção  _nomeDoMetodo (1 underscore)  Não deve ser acessado externamente class NomeDaClasse(object): def __init__(self, argumento1): print 'Fui inicializado!' self.atributo1 = argumento1 def __metodoDois(self): print 'Esse método é privado! :)'
  7. 7. Orientação a Objetos com Python  Alguns Exemplos  Personagem de Jogo  Evento
  8. 8. Orientação a Objetos com Python  Atributos de Classe >>> class Pessoa(object): ... populacao = 0 ... def __init__(self): ... self.__class__.populacao+=1 ... >>> flavio = Pessoa() >>> Pessoa.populacao 1 >>> igor = Pessoa() >>> Pessoa.populacao 2
  9. 9. Orientação a Objetos com Python  Métodos Estáticos class MyClass(object): def SomeMethod(x): print x SomeMethod = staticmethod(SomeMethod) >>> MyClass.SomeMethod(15) 15 >>> obj = MyClass() >>> obj.SomeMethod(15) 15
  10. 10. Orientação a Objetos com Python  Métodos de Classe class MyClass(object): def SomeMethod(cls, x): print cls, x SomeMethod = classmethod(SomeMethod) >>> MyClass.SomeMethod(15) __main__.MyClass 15 >>> obj = MyClass() >>> obj.SomeMethod(15) __main__.MyClass 15
  11. 11. Orientação a Objetos com Python  Herança class Poligono: def ehPoligono(self): return True class Triangulo(Poligono): def __init__(self): self.area = 100 self.lados = 3 def getArea(self): return self.area
  12. 12. Módulos e Bibliotecas Python
  13. 13. Módulos e Bibliotecas Python  Biblioteca  Arquivo que contém uma ou mais classes  Acessadas através de import
  14. 14. Módulos e Bibliotecas Python  Módulo  Pasta que contém vários arquivos (bibliotecas)  Acessadas através de import modulo.biblioteca
  15. 15. Módulos e Bibliotecas Python  Alguns módulos importantes  Os  Time  Math  Appuifw (s60)
  16. 16. SDK Python for s60
  17. 17. SDK Python for s60  Não disponível para Linux (ainda)  Passos pra Instalação (no Windows)  Baixe os 3 instaladores em: http://[MEU_IP]/  Execute o Instalador do ActivePerl  Descompacte o S60-SDK e execute o setup.exe  next → next → install  Descompacte o PythonForS60-SDK  Copie o conteúdo de epoc32/ para:  C:Symbian9.2S60...Epoc32  Seus códigos vão em: C:Symbian9.2S60...Epoc32winscwcpython
  18. 18. Introdução a Python for s60
  19. 19. Sintaxe de PyS60
  20. 20. PyS60  appuifw (Application User Interface Framework)  Interfaces Gráficas nativas da s60  appuifw.note: Notificações 'pop-up'  appuifw.query: Janela de input (1 campo)  appuifw.multi_query: Janela de input (2 campos)  appuifw.popup_menu: Menu Simples  appuifw.selection_list: Lista com Busca  appuifw.multi_selection_list: Lista capaz de selecionar vários itens
  21. 21. PyS60 - appuifw  appuifw.note  Descrição: Simples Janela de Notificação  Sintaxe: appuifw.note(texto, tipo)  Tipos podem ser:  Info  Error  Conf PyS60 - appuifw
  22. 22. PyS60 - appuifw  appuifw.query  Entrada de Dados simples  Sintaxe: appuifw.query(texto,tipo[,valor inicial])  Tipos podem ser:  Text  Number  Date  Time  Code  Query  Float
  23. 23. PyS60 - appuifw  appuifw.multi_query  Entrada de Dados Com 2 Campos  Sintaxe: appuifw.multi_query(label1,label2)
  24. 24. PyS60 - appuifw  appuifw.popup_menu  Menu 'Pop-up'  Sintaxe: appuifw.popup_menu(lista_com_escolhas[,label])  Retorna o indice da lista_de_escolhas
  25. 25. PyS60 - appuifw  appuifw.selection_list  Seleção com busca (lista grande)  Sintaxe: appuifw.selection_list(lista_com_escolhas[,busca])  Busca pode ser 0 ou 1  Retorna o indice da lista_com_escolhas
  26. 26. PyS60 - appuifw  appuifw.multi_selection_list  Seleção com busca e capacidade de seleção de mais de um item  Sintaxe: appuifw.multi_selection_list(lista[,style,busca])  Busca pode ser 0 ou 1
  27. 27. PyS60 - messaging  messaging  Módulo de manipulação de mensagens SMS  Sintaxe: messaging.sms_send('+Numero',u'Mensagem')
  28. 28. PyS60 - messaging  inbox  Acessando a Caixa de Entrada Import inbux, appuifw box = inbox.Inbox() for sms_id in box.sms_messages()[:5]: msg = box.content(sms_id) appuifw.note(msg)
  29. 29. PyS60 - messaging  Aplicação Funcional Import appuifw, messaging alunos = [u'flavio',u'lucas','u'danilo',u'joao',u'jose',u'maria'] ind_presentes = appuifw.multi_selection_list(alunos, 'checkbox',1) presentes = “” for indice in ind_presentes: presentes+= alunos[indice] + “ | ” presentes += u' Estavam presentes.' appuifw.note(u'Enviando SMS') messaging.sms_send('+558399814441', presentes) appuifw.note(u'Enviada!')
  30. 30. PyS60 – Estrutura de uma Aplicação appuifw  O Objeto appuifw.app  Estrutura
  31. 31. PyS60  Exemplo import appuifw, e32 def quit(): appuifw.note(u”Saindo..”) app_lock.signal() appuifw.app.exit_key_handler = quit appuifw.app.title = u'Primeira aplicação' appuifw.note(u”Aplicacao rodando..”) app_lock = e32.Ao_lock() app_lock.wait()
  32. 32. PyS60  Exemplo 2 import appuifw, e32 def foto(): appuifw.note(u'Tirando foto') def claro(): appuifw.note(u'Mais claro') def escuro(): appuifw.note(u'Mais Escuro') def quit(): appuifw.note(u”Saindo..”) app_lock.signal() appuifw.app.exit_key_handler = quit appuifw.app.title = u'Segunda aplicação' appuifw.app.menu = [(u”Tirar Foto”, foto), (u”Editar Foto”, ((u'Claro',claro),(u'Escuro', escuro)))] app_lock = e32.Ao_lock() app_lock.wait()
  33. 33. PyS60 – Estrutura de uma Aplicação appuifw  appuifw.app.body  Pode ser:  Canvas  Form  Listbox  Text  Área pode ser aumentada!  appuifw.app.screen = 'full'  appuifw.app.screen = 'large'  appuifw.app.screen = 'normal'
  34. 34. PyS60 - Sound  Text to Speech Import appuifw. audio texto = appuifw.query(u”Digite uma palavra:”, “text”) audio.say(text)
  35. 35. PyS60 - Sound  Mp3 Player import audio sound = audio.Sound.open("E:Soundsmysound.mp3") def playMP3(): sound.play() playMP3()
  36. 36. PyS60 - Teclado  Keyboard  É preciso associar um canvas ao app.body  Área drawable  Captura eventos do teclado Canvas = appuifw.Canvas() appuifw.app.body = canvas
  37. 37. PyS60 - Teclado  Keyboard  Mapa de Teclas
  38. 38. PyS60 - Teclado  Exemplo de Uso import appuifw, key_codes, e32 def keys(event): if event['keycode'] == key_codes.EKeyUpArrow: appuifw.note(u"Up arrow was pressed") elif event['keycode'] == key_codes.EKey2: appuifw.note(u"Key 2 was pressed") def quit(): app_lock.signal() canvas = appuifw.Canvas(event_callback = keys) appuifw.app.body = canvas appuifw.app.exit_key_handler = quit app_lock = e32.Ao_lock() app_lock.wait()
  39. 39. Prática!

×