implementação de aplicações móveis e jogos com python - aula 2

39
Implementação de Aplicações Móveis e Jogos com Python

Upload: flavio-ribeiro

Post on 02-Jul-2015

85 views

Category:

Documents


3 download

DESCRIPTION

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

TRANSCRIPT

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

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

Page 2: Implementação de Aplicações Móveis e Jogos com Python - Aula 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

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

Orientação a Objetos com Python

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

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()

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

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

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

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! :)'

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

Orientação a Objetos com Python

Alguns Exemplos

Personagem de Jogo Evento

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

Orientação a Objetos com Python

Atributos de Classe

>>> class Pessoa(object):... populacao = 0... def __init__(self):... self.__class__.populacao+=1... >>> flavio = Pessoa()>>> Pessoa.populacao1>>> igor = Pessoa()>>> Pessoa.populacao2

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

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

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

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

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

Orientação a Objetos com Python

Herança

class Poligono:

def ehPoligono(self):return True

class Triangulo(Poligono):def __init__(self):

self.area = 100self.lados = 3

def getArea(self):return self.area

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

Módulos e BibliotecasPython

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

Módulos e Bibliotecas Python

Biblioteca

Arquivo que contém uma ou mais classes Acessadas através de import

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

Módulos e Bibliotecas Python

Módulo

Pasta que contém vários arquivos (bibliotecas) Acessadas através de import modulo.biblioteca

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

Módulos e Bibliotecas Python

Alguns módulos importantes

Os

Time

Math

Appuifw (s60)

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

SDK Python for s60

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

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:\Symbian\9.2\S60...\Epoc32\

Seus códigos vão em: C:\Symbian\9.2\S60...\Epoc32\winscw\c\python\

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

Introdução a Pythonfor s60

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

Sintaxe de PyS60

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

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

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

PyS60 - appuifw

appuifw.note

Descrição: Simples Janela de Notificação

Sintaxe: appuifw.note(texto, tipo)

Tipos podem ser: Info Error Conf

PyS60 - appuifw

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

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

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

PyS60 - appuifw

appuifw.multi_query

Entrada de Dados Com 2 Campos

Sintaxe: appuifw.multi_query(label1,label2)

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

PyS60 - appuifw

appuifw.popup_menu

Menu 'Pop-up'

Sintaxe: appuifw.popup_menu(lista_com_escolhas[,label])

Retorna o indice da lista_de_escolhas

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

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

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

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

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

PyS60 - messaging

messaging

Módulo de manipulação de mensagens SMS

Sintaxe: messaging.sms_send('+Numero',u'Mensagem')

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

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)

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

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!')

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

PyS60 – Estrutura de uma Aplicação appuifw

O Objeto appuifw.app

Estrutura

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

PyS60

Exemplo

import appuifw, e32

def quit():appuifw.note(u”Saindo..”)app_lock.signal()

appuifw.app.exit_key_handler = quitappuifw.app.title = u'Primeira aplicação'appuifw.note(u”Aplicacao rodando..”)

app_lock = e32.Ao_lock()app_lock.wait()

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

PyS60

Exemplo 2import 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 = quitappuifw.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()

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

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'

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

PyS60 - Sound

Text to Speech

Import appuifw. audio

texto = appuifw.query(u”Digite uma palavra:”, “text”)audio.say(text)

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

PyS60 - Sound

Mp3 Player

import audio

sound = audio.Sound.open("E:\\Sounds\\mysound.mp3")

def playMP3(): sound.play()

playMP3()

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

PyS60 - Teclado

Keyboard

É preciso associar um canvas ao app.body Área drawable Captura eventos do teclado

Canvas = appuifw.Canvas()

appuifw.app.body = canvas

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

PyS60 - Teclado Keyboard

Mapa de Teclas

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

PyS60 - Teclado

Exemplo de Usoimport 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 = canvasappuifw.app.exit_key_handler = quitapp_lock = e32.Ao_lock()app_lock.wait()

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

Prática!