introdução ao pygame caio paes, demontiê junior, tales pimentel

22
Introdução ao Pygame Caio Paes, Demontiê Junior, Tales Pimentel

Upload: felicia-vasques-assuncao

Post on 07-Apr-2016

221 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Introdução ao Pygame Caio Paes, Demontiê Junior, Tales Pimentel

Introdução ao Pygame

Caio Paes, Demontiê Junior, Tales Pimentel

Page 2: Introdução ao Pygame Caio Paes, Demontiê Junior, Tales Pimentel

Eventos do mousepygame.mouse.get_pos()pygame.mouse.get_pos()

Retorna uma tupla (x, y) referente à posiçãoRetorna uma tupla (x, y) referente à posiçãopygame.mouse.get_pressed()pygame.mouse.get_pressed()

Retorna uma tupla (button1, button2, button3)Retorna uma tupla (button1, button2, button3)Cada campo da tupla é um Cada campo da tupla é um booleanbooleanEx.: pygame.mouse.get_pressed()[0]Ex.: pygame.mouse.get_pressed()[0]

Indica se o botão esquerdo foi pressionadoIndica se o botão esquerdo foi pressionado

Page 3: Introdução ao Pygame Caio Paes, Demontiê Junior, Tales Pimentel

Eventos do tecladoPodemos capturar as teclas pressionadas de Podemos capturar as teclas pressionadas de duas formas:duas formas:

Usando o pygame.event.get():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 KEYUPif event.key == K_ESCAPE:

...

Page 4: Introdução ao Pygame Caio Paes, Demontiê Junior, Tales Pimentel

Eventos do tecladoOu usando o pygame.key.get_pressed(), que Ou usando o pygame.key.get_pressed(), que retorna uma lista com retorna uma lista com booleansbooleans::

As constantes (K_ESCAPE, K_f, etc) representam o As constantes (K_ESCAPE, K_f, etc) representam o índice referente a cada tecla nessas listasíndice referente a cada tecla nessas listas

# Capturando eventos do taclado# a partir do pygame.key.get_pressed()

pressed_keys = pygame.key.get_pressed()

if pressed_keys[K_ESCAPE]:...

Page 5: Introdução ao Pygame Caio Paes, Demontiê Junior, Tales Pimentel

Constante Nome da teclaK_ESCAPE “Esc”K_RETURN EnterK_BACKSPACE BackspaceK_SPACE Barra de espaçoK_a, K_b, ..., K_z Teclas de A a ZK_LEFT Seta para esquerdaK_RIGHT Seta para direitaK_UP Seta para cimaK_DOWN Seta para baixoK_0, K_1, ..., K_9 Teclas de 1 a 9K_LSHIFT, K_RSHIFT Shift esquerdo e direitoK_LCTRL, K_RCTRL “ctrl” esquerdo e direitoK_LALT, K_RALT “Alt” esquerdo e direito

Algumas teclas

Page 6: Introdução ao Pygame Caio Paes, Demontiê Junior, Tales Pimentel

Onde encontrar?Documentação do PygameDocumentação do Pygame

Mouse: Mouse: http://www.pygame.org/docs/ref/mouse.htmlTeclado: Teclado: http://www.pygame.org/docs/ref/key.html

Page 7: Introdução ao Pygame Caio Paes, Demontiê Junior, Tales Pimentel

Principais MódulosImage – Manipulação de imagens do sistemaImage – Manipulação de imagens do sistemaMixer.Sound – Sons simples, efeitos sonorosMixer.Sound – Sons simples, efeitos sonorosMixer.Music – Player de músicasMixer.Music – Player de músicasSprite – Objetos de colisão, ex: personagensSprite – Objetos de colisão, ex: personagensTime – Manipulação do tempo no jogoTime – Manipulação do tempo no jogoFont – Criar textos e renderizar em imagensFont – Criar textos e renderizar em imagens

Page 8: Introdução ao Pygame Caio Paes, Demontiê Junior, Tales Pimentel

ImageFunções para lidar com as imagens externas ao Funções para lidar com as imagens externas ao Pygame.Pygame.Pygame.image.load(filename)Pygame.image.load(filename)

Carrega uma imagem do sistema para o jogoCarrega uma imagem do sistema para o jogoFormatos suportados: BMP, TGA, GIF (não Formatos suportados: BMP, TGA, GIF (não animado), JPEG, PNG, TGA, dentre outrasanimado), 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_boneco = pygame.image.load(“images”+os.sep+”objetos” \\+ “garrafa.png”).convert_alpha()

Page 9: Introdução ao Pygame Caio Paes, Demontiê Junior, Tales Pimentel

ImagePara que os códigos anteriores funcionem Para que os códigos anteriores funcionem corretamente, veja a organização dos corretamente, veja a organização dos arquivos:arquivos:

programa.pyprograma.pyimages/images/

pedra.gifpedra.gifobjetos/objetos/

garrafa.pnggarrafa.png

Page 10: Introdução ao Pygame Caio Paes, Demontiê Junior, Tales Pimentel

ImagePygame.image.save(Surface, filename)Pygame.image.save(Surface, filename)

Salva uma imagem carregada no Pygame Salva uma imagem carregada no Pygame (Surface) como um arquivo de imagem no (Surface) como um arquivo de imagem no sistema.sistema.Formatos suportados:Formatos suportados:

BMP, TGA, PNG, JPEGBMP, TGA, PNG, JPEG# Salvando uma imagem no sistema# Neste pontos existe uma imagem na variável img_desenhoPygame.image.save(img_desenho, “images”+os.sep+”desenhos”

\\+os.sep+”desenho1.jpg”)

Page 11: Introdução ao Pygame Caio Paes, Demontiê Junior, Tales Pimentel

MixerÉ possível manter vários sons tocando ao É possível manter vários sons tocando ao mesmo tempo mesmo tempo Parar um ou todos os sons de uma vezParar um ou todos os sons de uma vezpygame.mixer.stop()pygame.mixer.stop()

Para a execução de todos os sonsPara a execução de todos os sonsPygame.mixer.unpause()Pygame.mixer.unpause()

Recomeça a execução dos sons paradosRecomeça a execução dos sons parados

Page 12: Introdução ao Pygame Caio Paes, Demontiê Junior, Tales Pimentel

Soundpygame.mixer.Sound(filename)pygame.mixer.Sound(filename)

Retorna um objeto Sound, que pode ser executado Retorna um objeto Sound, que pode ser executado e parado quando você quisere parado quando você quiser

Formatos suportados: OGG e WAV Formatos suportados: OGG e WAV (Descompressado)(Descompressado)

# 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

Page 13: Introdução ao Pygame Caio Paes, Demontiê Junior, Tales Pimentel

MusicÉ interno ao módulo MixerÉ interno ao módulo MixerExecuta músicas durante o jogo.Executa músicas durante o jogo.Pode executar apenas uma música por vez.Pode executar apenas uma música por vez.Formatos suportados:Formatos suportados:

MP3 e OGGMP3 e OGG# Carrega uma música ambiente para o jogo.musica = pygame.mixer.music.load(“musics”+os.sep+”jazz_and_blues1.mp3”)musica.play(-1) # Toca a música infinitamentemusica.set_volume(0.9) # 0 <= volume <= 1.0Musica.fadeout(3000) # Diminui o volume de acordo com o tempo em milisegundos

Page 14: Introdução ao Pygame Caio Paes, Demontiê Junior, Tales Pimentel

Sprite bola

SpriteMódulo próprio para os Módulo próprio para os objetos, personagens, e objetos, personagens, e cenário do jogocenário do jogoUm Sprite, é a forma de Um Sprite, é a forma de representar um item do representar um item do jogo. Possui uma posição jogo. Possui uma posição (na tela) e uma imagem(na tela) e uma imagemAs fuções do módulo sprite As fuções do módulo sprite lidam com objetos Sprite()lidam com objetos Sprite()Pygame.sprite.Sprite()Pygame.sprite.Sprite()

Sprite.rectSprite.rectSprite.imageSprite.image

rect = (x, y)

image = pygame.surface

Page 15: Introdução ao Pygame Caio Paes, Demontiê Junior, Tales Pimentel

SpriteVárias funcões do módulo sprite são para detecção Várias funcões do módulo sprite são para detecção de colisão.de colisão.Pygame.sprite.collide_mask(sprite_a, sprite_b)Pygame.sprite.collide_mask(sprite_a, sprite_b)

Retorna um bool indicando se as imagens dos Retorna um bool indicando se as imagens dos dois sprites estão se sobrepondo (colidindo)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

Page 16: Introdução ao Pygame Caio Paes, Demontiê Junior, Tales Pimentel

Spritepygame.sprite.collide_rect(sprite_a, sprite_b)pygame.sprite.collide_rect(sprite_a, sprite_b)

Detecção de colisão entre dois sprites, Detecção de colisão entre dois sprites, usando rect (posicionamento e dimensões)usando rect (posicionamento e dimensões)

Pygame.sprite.collide_circle(sprite_a, sprite_b)Pygame.sprite.collide_circle(sprite_a, sprite_b)Detecção de colisão usando áreas Detecção de colisão usando áreas circularescirculares

Outras fuções do módulo sprite, permitem Outras fuções do módulo sprite, permitem outros tipos de verificação (por grupos de outros tipos de verificação (por grupos de sprites, por camada)sprites, por camada)

Page 17: Introdução ao Pygame Caio Paes, Demontiê Junior, Tales Pimentel

TimeMódulo responsável pela informação sobre o Módulo responsável pela informação sobre o tempo no jogo.tempo no jogo.Muito útil em jogos que possuem movimentos Muito útil em jogos que possuem movimentos e físicae física

Regula a movimentação dos objetos na telaRegula a movimentação dos objetos na telaEvita diferença de execução entre Evita diferença de execução entre máquinas diferentesmáquinas diferentes

Page 18: Introdução ao Pygame Caio Paes, Demontiê Junior, Tales Pimentel

Timepygame.time.Clock()pygame.time.Clock()

Cria um relógio que Cria um relógio que serve para se obter a serve para se obter a variação de tempo ao variação de tempo ao longo do programalongo do programaClock.tick()Clock.tick()

Retorna o tempo, Retorna o tempo, em milisegundos, em milisegundos, desde a última desde a última chamada deste chamada deste métodométodoDeve ser uma vez Deve ser uma vez por looppor loop

# Cria um relógioclock = pygame.time.Clock()…x , y = (10, 5)vel_x, vel_y = 7, 3…While True:

delta_tempo = clock.tick()

…x += vel_x * delta_tempoy += vel_y * delta_tempo

# S = S0 + v * t

Page 19: Introdução ao Pygame Caio Paes, Demontiê Junior, Tales Pimentel

FontPermite renderizar TrueType Fonts (*.TTF) em Permite renderizar TrueType Fonts (*.TTF) em imagens para o jogoimagens para o jogoPermite a utilização de fontes extras, especiaisPermite a utilização de fontes extras, especiaispygame.font.Font(filename)pygame.font.Font(filename)

Carrega uma fonte do sistemaCarrega uma fonte do sistemaFormato suportado: TTFFormato suportado: TTF

# Carrega uma fonte colocada na pasta pessoal game_fontsfonte_jogo = pygame.font.Font(“game_fonts”+os.sep+”showgothic_card.ttf”)

Page 20: Introdução ao Pygame Caio Paes, Demontiê Junior, Tales Pimentel

FontFont.render(texto, antialias, cor)Font.render(texto, antialias, cor)

Renderiza (Interpreta a fonte e converte em Renderiza (Interpreta a fonte e converte em uma imagem) o texto na cor desejadauma imagem) o texto na cor desejadaO retorno é uma imagem do Pygame (Surface)O retorno é uma imagem do Pygame (Surface)

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

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

150))

Page 21: Introdução ao Pygame Caio Paes, Demontiê Junior, Tales Pimentel

{caiocm, demontie,

tales}@dsc.ufcg.edu.br

Dúvidas?

Page 22: Introdução ao Pygame Caio Paes, Demontiê Junior, Tales Pimentel

Referênciashttp://www.pygame.org/Beginning Game Development with Python and Pygame, Will McGugan – Apress 2007.