0% found this document useful (0 votes)
4 views36 pages

Minicurso Pygame

Pygame presentation

Uploaded by

demontiejunior
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
4 views36 pages

Minicurso Pygame

Pygame presentation

Uploaded by

demontiejunior
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 36

Créditos

Grupo PET Computação UFCG


Caio Paes

Fabio Leite
Agenda
Introdução a Pygame

Como funciona um jogo em Pygame?

Eventos: mouse e teclado

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

>>> import pygame


>>>
Introdução
Instalando
Num SO Linux, é possível instalar com o seguinte
comando
sudo apt-get install python-pygame
Como funciona um jogo em Pygame ?

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 ?

Capturando events (p4_bouncer.py)


pygame.event.get()
Retorna uma lista de eventos
QUIT
KEYDOWN
KEYUP
MOUSEBUTTONUP
MOUSEBUTTONDOWN
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]:
...

As constantes (K_ESCAPE, K_f, etc) representam o


índice referente à cada tecla dessas listas
Algumas teclas
Constante Nome da tecla
K_ESCAPE “Esc”
K_RETURN Enter
K_BACKSPACE Backspace
K_SPACE Barra de espaço
K_a, K_b, ..., K_z Teclas de A a Z
K_LEFT Seta para esquerda
K_RIGHT Seta para direita
K_UP Seta para cima
K_DOWN Seta para baixo
K_0, K_1, ..., K_9 Teclas de 1 a 9
K_LSHIFT, K_RSHIFT Shift esquerdo e direito
K_LCTRL, K_RCTRL “ctrl” esquerdo e direito
K_LALT, K_RALT “Alt” esquerdo e direito
Onde encontrar?
Documentação do Pygame
Mouse: http://www.pygame.org/docs/ref/mouse.html
Teclado: http://www.pygame.org/docs/ref/key.html
Principais Módulos
Image – Manipulação de imagens do sistema
Mixer.Sound – Sons simples, efeitos sonoros
Mixer.Music – Player de músicas
Sprite – Objetos de colisão, ex: personagens
Time – Manipulação do tempo no jogo
Font – Criar textos e renderizar em imagens
Image
Funções para lidar com as imagens externas ao Pygame.
Pygame.image.load(filename)
(p5_convert_e_convert_alpha.py)
Carrega uma imagem do sistema para o jogo
Formatos suportados: BMP, TGA, GIF (não
animado), JPEG, PNG, TGA, dentre outras
# Carrega uma imagem para o Pygame.
# OBS: Carrega, NÃO blita ela na tela!
img_pedra = pygame.image.load(“images”+os.sep
\\+”pedra.gif”).convert()

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

# Torna a cor do pixel na posicao (0,0) transparente


loaded_image = img.convert()
color = loaded_image.get_at((0,0))
loaded_image.set_colorkey(color, RLEACCEL)
return loaded_image
Image
Dica 2: carregando “subimagens”

def load_subsurfaces(image, subsurfaces):


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

É possível parar um ou todos os sons de uma vez

pygame.mixer.stop()

Para a execução de todos os sons

Pygame.mixer.unpause()

Recomeça a execução dos sons parados


Sound
pygame.mixer.Sound(filename) (p6_bouncer_com_som.py)

Retorna um objeto Sound, que pode ser executado e


parado quando você quiser

Formatos suportados: OGG e WAV (descomprimido)

# Carrega uma som de colisão para o jogo.


som_colisao = pygame.mixer.Sound(“sounds”+os.sep+”toc1.wav”)

if acontece a colisao:
som_colisao.play(1) # inteiro é o numero de repetições

som_colisao.set_volume(0.7) # 0 <= volume <= 1.0


Music
Interno ao módulo Mixer
Executa músicas durante o jogo.
(p7_bouncer_som_e_musica.py)
Pode executar apenas uma música por vez.
Formatos suportados:
MP3 e OGG

# Carrega uma música ambiente para o jogo.


pygame.mixer.music.load(“musics”+os.sep+”jazz_and_blues1.mp3
”)
pygame.mixer.music.play(-1) # Toca a música infinitamente
pygame.mixer.music.set_volume(0.9) # 0 <= volume <= 1.0
pygame.mixer.music.fadeout(3000) # Diminui o volume de
acordo com o tempo em milisegundos
Sprite
Módulo próprio para os
objetos, personagens, e
cenário do jogo

Um Sprite é a forma usada rect = (x, y)


para representar um item do
jogo. Possui uma posição
(na tela) e uma imagem
image = pygame.surface
As fuções do módulo sprite
lidam com objetos Sprite()

Pygame.sprite.Sprite() Sprite bola


Sprite.rect

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)

Detecção de colisão entre dois sprites,


usando rect (posicionamento e dimensões)

Pygame.sprite.collide_circle(sprite_a, sprite_b)

Detecção de colisão usando áreas circulares

Outras funções do módulo sprite permitem


outros tipos de verificação (por grupos de
sprites, por camada)
Time
Módulo responsável pela informação sobre o
tempo no jogo.

Muito útil em jogos que possuem muitos


movimentos e objetos acelerados

Regula a movimentação dos objetos na tela

Evita diferença de execução entre máquinas


diferentes
Time
# Cria um relógio pygame.time.Clock()
clock = pygame.time.Clock()
… Cria um relógio que
serve para obter a
x , y = (10, 5) variação de tempo ao
vel_x, vel_y = 7, 3 longo do programa

While True: Clock.tick()
delta_tempo =
clock.tick() Retorna o tempo, em
… milisegundos, desde
a última chamada
x += vel_x * delta_tempo deste método
y += vel_y * delta_tempo
Uma vez por loop
# S = S0 + v * t
Font
Permite renderizar TrueType Fonts (*.TTF) em
imagens para o jogo
Permite a utilização de fontes extras, especiais
pygame.font.Font(filename)
Carrega uma fonte do sistema
Formato suportado: TTF

# Carrega uma fonte colocada na pasta pessoal game_fonts


fonte_jogo =
pygame.font.Font(“game_fonts”+os.sep+”showgothic_card.ttf”)
Font
Font.render(texto, antialias, cor)
Renderiza (Interpreta a fonte e converte em uma
imagem) o texto na cor desejada
O retorno é uma imagem do Pygame (Surface)

tela = pygame.display.set_mode((800, 600), 0, 32)
# Carrega uma fonte colocada na pasta pessoal game_fonts
fonte_jogo =
pygame.font.Font(“game_fonts”+os.sep+”showgothic_card.ttf”)

tela.blit(fonte_jogo.render(“Que bom!”, True, (255, 0, 0)),


\\ (200,
150))
Referências

http://www.pygame.org/

Beginning Game Development with Python and


Pygame, Will McGugan – Apress 2007.

You might also like