Minicurso Pygame
Minicurso Pygame
Fabio Leite
Agenda
Introdução a Pygame
Principais módulos
Introdução
O que é Pygame ?
Pygame é uma biblioteca gráfica, ou seja, um
conjunto de módulos, a partir do qual é possível
criar aplicações visuais próprias para jogos.
Disponibiliza funções para interação com o mouse,
teclado, joystick e webcam.
Disponibiliza funções para tratar da tela, sons,
personagens e eventos do jogo.
Introdução
http://www.pygame.org
Introdução
Vantagens
Portável
(Windows, Linux, Mac OS, SymbianOS, Nokia)
Mais de 1000
Documentação projetos
disponível no site disponíveis
no site
Introdução
Instalando
No site você pode baixar o código fonte ou o
instalador
Versões compatíveis com Python 2.7 e 3.2
Testar se o Pygame está instalado corretamente
Um “Hello World”
exibindo uma imagem (p1_HelloWorld.py)
exibindo um texto (p2_HelloWorld2.py)
Como funciona um jogo em Pygame ?
Posicionamento da imagem
“Movimentando” a imagem (p3_animacao.py)
Eventos (events )
Qual a principal característica de um jogo?
Interação com o jogador
Interação com os events
Como funciona um jogo em Pygame ?
Utilizando events
event.type
event.key
Utilizando key, mouse
key.get_pressed()
mouse.get_pressed)
mouse.get_pos()
Eventos do mouse
pygame.mouse.get_pos() (menu.py)
Retorna uma tupla (x, y) referente à posição
pygame.mouse.get_pressed()
Retorna uma tupla (button1, button2, button3)
Cada posicao da tupla é um boolean
Ex.: pygame.mouse.get_pressed()[0]
Indica se o botão esquerdo foi pressionado
Eventos do teclado
Podemos capturar as teclas pressionadas de duas
formas:
Usando o pygame.event.get():
# Capturando eventos do taclado a partir
#do pygame.event.get()
for event in pygame.event.get():
if event.type == KEYDOWN: # Ou KEYUP
if event.key == K_ESCAPE:
...
Eventos do teclado
Ou usando o pygame.key.get_pressed(), que retorna
uma lista com booleans:
# Capturando eventos do teclado
# a partir do pygame.key.get_pressed()
pressed_keys = pygame.key.get_pressed()
if pressed_keys[K_ESCAPE]:
...
img_garrafa = pygame.image.load(“images”+os.sep+”objetos”
\\+os.sep+“garrafa.png”).convert_alpha()
Image
Para que os códigos anteriores funcionem
corretamente, veja a organização dos arquivos:
programa.py
images/
pedra.gif
objetos/
garrafa.png
Image
Pygame.image.save(Surface, filename)
Salva uma imagem carregada no Pygame
(Surface) como um arquivo de imagem no
sistema.
Formatos suportados:
BMP, TGA, PNG, JPEG
# Salvando uma imagem no sistema
# Neste pontos existe uma imagem na variável img_desenho
pygame.image.save(img_desenho, “images”+os.sep+”desenhos”
\\+os.sep+”desenho1.jpg”)
Image
Dica 1: tornando o background transparente
def remove_background(image):
try:
img = pygame.image.load('images' + os.sep + image)
except:
print 'Error: image %s not found' % image
images = []
for rect in subsurfaces:
sub = img.subsurface(rect).convert()
images.append(sub)
return images
Image
Dica 2: carregando “subimagens”
n = 10 #numero de subsurfaces
size = pygame.image.load('img.png').convert().get_size()
images = load_subsurfaces('img.png',
[((x,0),(size[0]/n,size[1])) for x in xrange(0, size[0],
size[0]/n)])
Mixer
É possível manter vários sons tocando ao mesmo
tempo
pygame.mixer.stop()
Pygame.mixer.unpause()
Sprite.image
Sprite
Várias funcões do módulo sprite são para detecção
de colisão.
Pygame.sprite.collide_mask(sprite_a, sprite_b)
Retorna um bool indicando se as imagens dos
dois sprites estão se sobrepondo (colidindo)
# Verifica se dois Sprites estão colidindo.
# Neste ponto devem existir dois sprites, bola e parede.
if pygame.sprite.collide_mask(bola, parede):
som_colisao.play(1)
# mude a direção da bola ou
# faça o jogador perder uma vida e recomece o jogo
Sprite
pygame.sprite.collide_rect(sprite_a, sprite_b)
Pygame.sprite.collide_circle(sprite_a, sprite_b)
http://www.pygame.org/