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

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

Embed Size (px)

DESCRIPTION

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

Citation preview

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

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 6

Internet Tablets

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

Internet Tablets

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

Internet Tablets

O que são?

Dispositivos móveis capazes de conectar-se a internet através de redes wireless ou bluetooth (agora também com 3g!)

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

Internet Tablets

O que são?

Dispositivos móveis capazes de conectar-se a internet através de redes wireless ou bluetooth.

Hardware Tela resolução de 800x480 Processador ARM-Based (330mhz ~ 600mhz) 1GB~128MB Memória RAM WLAN (b\g) e Bluetooth Telas Sensíveis ao toque Teclado QWERTY embutido (em alguns)

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

Internet Tablets

Sistemas Operacionais (baseados em Linux)

Maemo Mamona Ubuntu (9.04) Gentoo

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

O OpenEmbedded

O que é?

Build Framework pra embedded Linux

bitbake Arquivos de metadata

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

Quem usa?

OpenMoko

Idéia de desenvolvimento de celular 100% livre

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

Quem usa?

Ångström

Distribuição mais “madura” do OE

Dispositivos que aceitam essa distro: Nokia 770 Internet Tablet HTC Universal / iMate JasJar Motorola A780 Psion| Teklogix NetBook Pro Gumstix and Kouchuk-Bars Beagle Board Pandora

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

Quem usa?

BeagleBoard● HW baseado em OMAP3

● Baixo custo

– $ 149

● Baixo consumo de energia

– Máximo 2W

● http://beagleboard.org

– Esquema de HW aberto \o/

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

Quem usa?

BeagleBoard

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

U-boot: acesso via Minicom

sudo apt-get install minicom

minicom --setup

minicom

Quem usa?

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

Quem usa?

Palm Pre

Aposta da Palm em reverter o jogo WebOS

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

Quem usa?

KaeilOS

Fabricante de Hardware

Suporte Pago

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

Internet Tablets

Projetos e Softwares

Mozilla Fennec (Firefox pra Mobile)

Brisa UPnP

Canola

CarMan

Tapioca Framework

Maemo Community (No Google Summer of Code)

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

Internet Tablets

Demo!

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

Off-Topic: Arduino

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

● O que é?

É um projeto de Hardware e Software Livre voltado para

artistas, designers, hobbystas ou qualquer um interessado em criar objetos e ambientes interativos.

Arduino

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

● O que é?

Arduino Programming Language (Baseada em Wiring)

Arduino Development Environment (IDE baseada em Processing)

Pode ser feito a mão (Paperduino, Severino, Toscoduino, etc)

Múltiplas derivações

Comunicação fácil

Ciclo de desenvolvimento rápido

Barato!

Arduino

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

● Hardware

Microcontrolador Atmega168 RISC (131 instruções) 24 Mhz NVM de 16KBytes (2k usados no bootloader) 1KByte de SRAM Portas A\D

UART 6v – 20v (Recomendado 7v a 12v)

Arduino

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

● Software Estrutura Básica

ArduinoArduino

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

Arduino

● Ciclo de Desenvolvimento

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

● Shields

Arduino

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

● Computadores (lado Computador)

PySerial

Arduino

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

Arduino

● Dispositivos Móveis

Pra PyS60 e Bluetooth: lightblue

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

Jogos com Python

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

Jogos com Python

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

PyGame

Criando um joguinho do tipo Arkanoid

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

PyGame

A Classe bouncer

class Bouncer(pygame.sprite.Sprite): def __init__(self, startpos): pygame.sprite.Sprite.__init__(self) #direcao: 1=direita, -1=esquerda self.direction = 1

#carrega a imagem e a posiciona na tela self.image, self.rect = load_image('bouncer.gif') self.rect.centerx = startpos[0] self.rect.centery = startpos[1] def update(self): #multiplicamos x por 3 pro bouncer mover-seum pouco mais rápido! self.rect.move_ip((self.direction*3,0))

#se o bouncer atingir os limites da tela, invertemos a sua direcao if self.rect.left < 0: self.direction = 1 elif self.rect.right > width: self.direction = -1

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

PyGame A Classe ball

class Ball(pygame.sprite.Sprite): """classe para a bola""" def __init__(self, startpos): pygame.sprite.Sprite.__init__(self) self.speed = [2,2] #carrega a imagem e a posiciona na tela self.image, self.rect = load_image('ball.gif') self.rect.centerx = startpos[0] self.rect.centery = startpos[1] #salva a posicao inicial para ser reutilizada #quando a bola sair da tela pelo fundo self.init_pos = startpos

def update(self): self.rect.move_ip(self.speed) #se a bola atingir os lados da tela, inverte a #direcao horizontal (x) if self.rect.left < 0 or self.rect.right > width: self.speed[0] = -self.speed[0] #se a bola atingir o topo da tela, inverte a #posicao vertical (y) if self.rect.top < 0: self.speed[1] = -self.speed[1] #se a bola atingir o fundo da tela, reseta #a sua posicao if self.rect.bottom > height: self.rect.centerx = self.init_pos[0] self.rect.centery = self.init_pos[1]

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

PyGame

Checando eventos (já no mainloop!)

#checa eventos de teclado

for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit() elif event.type == pygame.KEYDOWN: if event.key == pygame.K_LEFT: bouncer.direction = -1 if event.key == pygame.K_RIGHT: bouncer.direction = 1

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

PyGame

Reagindo a colisões

if bouncer.rect.colliderect(ball.rect): if ball.speed[1] > 0: ball.speed[1] = -ball.speed[1]

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

PyGame

Atualizando a tela e redesenhando

#atualiza os objetosball.update()bouncer.update() #redesenha a telascreen.fill(black)screen.blit(ball.image, ball.rect)screen.blit(bouncer.image, bouncer.rect)pygame.display.flip()

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

Tudo Pronto!

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

PyGame

Exerc cio!í

Faça um pong!

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

Práticas de Conectividade(web e bluetooth)