Post on 27-Jun-2015
description
Implementação de Aplicações Móveis e Jogos com Python
Internet Tablets
Internet Tablets
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!)
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)
Internet Tablets
Sistemas Operacionais (baseados em Linux)
Maemo Mamona Ubuntu (9.04) Gentoo
O OpenEmbedded
O que é?
Build Framework pra embedded Linux
bitbake Arquivos de metadata
Quem usa?
OpenMoko
Idéia de desenvolvimento de celular 100% livre
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
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/
Quem usa?
BeagleBoard
U-boot: acesso via Minicom
sudo apt-get install minicom
minicom --setup
minicom
Quem usa?
Quem usa?
Palm Pre
Aposta da Palm em reverter o jogo WebOS
Quem usa?
KaeilOS
Fabricante de Hardware
Suporte Pago
Internet Tablets
Projetos e Softwares
Mozilla Fennec (Firefox pra Mobile)
Brisa UPnP
Canola
CarMan
Tapioca Framework
Maemo Community (No Google Summer of Code)
Internet Tablets
Demo!
Off-Topic: Arduino
● 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
● 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
● 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
● Software Estrutura Básica
ArduinoArduino
Arduino
● Ciclo de Desenvolvimento
● Shields
Arduino
● Computadores (lado Computador)
PySerial
Arduino
Arduino
● Dispositivos Móveis
Pra PyS60 e Bluetooth: lightblue
Jogos com Python
Jogos com Python
PyGame
Criando um joguinho do tipo Arkanoid
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
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]
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
PyGame
Reagindo a colisões
if bouncer.rect.colliderect(ball.rect): if ball.speed[1] > 0: ball.speed[1] = -ball.speed[1]
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()
Tudo Pronto!
PyGame
Exerc cio!í
Faça um pong!
Práticas de Conectividade(web e bluetooth)