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

282 visualizações

Publicada em

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

0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
282
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2
Ações
Compartilhamentos
0
Downloads
54
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

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!

×