MiniCursoPygame

22

Transcript of MiniCursoPygame

5/11/2018 MiniCursoPygame - slidepdf.com

http://slidepdf.com/reader/full/minicursopygame 1/22

5/11/2018 MiniCursoPygame - slidepdf.com

http://slidepdf.com/reader/full/minicursopygame 2/22

 

Eventos do mouse pygamepygame.mouse..mouse.get_posget_pos()()

Retorna umaRetorna uma tuplatupla (x, y) referente à posição(x, y) referente à posiçãopygamepygame.mouse..mouse.get_pressedget_pressed()()

Retorna umaRetorna uma tuplatupla (button1, button2, button3)(button1, button2, button3)

Cada campo daCada campo da tuplatupla é umé um boolean boolean 

Ex.:Ex.: pygamepygame.mouse..mouse.get_pressedget_pressed()[0]()[0]

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

5/11/2018 MiniCursoPygame - slidepdf.com

http://slidepdf.com/reader/full/minicursopygame 3/22

 

Eventos do tecladoPodemos capturar as teclas pressionadas dePodemos capturar as teclas pressionadas de

duas formas:duas formas:Usando oUsando o pygamepygame..event event..get 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:

...

 

5/11/2018 MiniCursoPygame - slidepdf.com

http://slidepdf.com/reader/full/minicursopygame 4/22

Eventos do tecladoOu usando oOu usando o pygamepygame..keykey..get_pressedget_pressed(), que retorna(), que retorna

uma lista comuma lista com booleans booleans ::

As constantes (K_ESCAPE,As constantes (K_ESCAPE, K_f K_f,, etcetc) representam o) 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]:

...

 

5/11/2018 MiniCursoPygame - slidepdf.com

http://slidepdf.com/reader/full/minicursopygame 5/22

ConstanteConstanteConstanteConstante Nome da teclaNome da teclaNome da teclaNome da tecla

K_ESCAPE “Esc”

K_RETURN Enter 

K_BACKSPACE Backspace 

K_SPACE Barra de espaço

 

Algumas teclas

  _ , _ , ..., _  

K_LEFT Seta para esquerda

K_RIGHT Seta para direita

K_UP Seta para cima

K_DOWN Seta para baixoK_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

 

5/11/2018 MiniCursoPygame - slidepdf.com

http://slidepdf.com/reader/full/minicursopygame 6/22

Onde encontrar?Documentação doDocumentação do PygamePygame

Mouse:Mouse: http://www.pygame.org/docs/ref/mouse.htmlhttp://www.pygame.org/docs/ref/mouse.html

Teclado:Teclado: http://www.pygame.org/docs/ref/key.htmlhttp://www.pygame.org/docs/ref/key.html

 

5/11/2018 MiniCursoPygame - slidepdf.com

http://slidepdf.com/reader/full/minicursopygame 7/22

Principais MódulosImageImage –  – Manipulação de imagens do sistemaManipulação de imagens do sistema

Mixer.SoundMixer.Sound –  – Sons simples, efeitos sonorosSons simples, efeitos sonoros

Mixer.MusicMixer.Music –  – Player de músicasPlayer de músicas

SpriteSprite –  – Objetos de colisão, ex: personagensObjetos de colisão, ex: personagensTimeTime –  – Manipulação do tempo no jogoManipulação do tempo no jogo

Font Font –  – Criar textos e renderizar em imagensCriar textos e renderizar em imagens

 

5/11/2018 MiniCursoPygame - slidepdf.com

http://slidepdf.com/reader/full/minicursopygame 8/22

Image

Funções para lidar com as imagens externas ao Pygame.Funções para lidar com as imagens externas ao Pygame.

Pygame.image.load(filename)Pygame.image.load(filename)

Carrega uma imagem do sistema para o jogoCarrega uma imagem do sistema para o jogo

 orma os supor a os: , , n oorma os supor a os: , , n oanimado), 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()

 

5/11/2018 MiniCursoPygame - slidepdf.com

http://slidepdf.com/reader/full/minicursopygame 9/22

Image

Para que os códigos anteriores funcionemPara que os códigos anteriores funcionem

corretamente, veja a organização dos arquivos:corretamente, veja a organização dos arquivos:

programa.pyprograma.pyimages/images/

pedra.gif pedra.gif 

objetos/objetos/garrafa.pnggarrafa.png

 

5/11/2018 MiniCursoPygame - slidepdf.com

http://slidepdf.com/reader/full/minicursopygame 10/22

Image

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

Salva uma imagem carregada no PygameSalva uma imagem carregada no Pygame(Surface) como um arquivo de imagem no(Surface) como um arquivo de imagem nosistema.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_desenho

Pygame.image.save(img_desenho, “images”+os.sep+”desenhos”

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

 

5/11/2018 MiniCursoPygame - slidepdf.com

http://slidepdf.com/reader/full/minicursopygame 11/22

Mixer

É possível manter vários sons tocando aoÉ possível manter vários sons tocando aomesmo tempomesmo tempo

Parar um ou todos os sons de uma vezParar um ou todos os sons de uma vez

pygame.mixer.stop()pygame.mixer.stop()

Para a execução de todos os sonsPara a execução de todos os sons

Pygame.mixer.unpause()Pygame.mixer.unpause()

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

 

5/11/2018 MiniCursoPygame - slidepdf.com

http://slidepdf.com/reader/full/minicursopygame 12/22

Sound

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

Retorna um objeto Sound, que pode ser executado eRetorna um objeto Sound, que pode ser executado eparado quando você quiserparado quando você quiser

 

# 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

 

5/11/2018 MiniCursoPygame - slidepdf.com

http://slidepdf.com/reader/full/minicursopygame 13/22

Music

É interno ao módulo MixerÉ interno ao módulo Mixer

Executa 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 infinitamente

musica.set_volume(0.9) # 0 <= volume <= 1.0

Musica.fadeout(3000) # Diminui o volume de acordo com o

tempo em milisegundos

 

5/11/2018 MiniCursoPygame - slidepdf.com

http://slidepdf.com/reader/full/minicursopygame 14/22

Sprite

Módulo próprio para osMódulo próprio para os

objetos, personagens, eobjetos, personagens, ecenário do jogocenário do jogo

Um Sprite, é a forma deUm Sprite, é a forma derepresentar um item dorepresentar um item do

rect = (x, y)

Sprite bola

..

(na tela) e uma imagem(na tela) e uma imagem

As fuções do módulo spriteAs fuções do módulo spritelidam com objetos Sprite()lidam com objetos Sprite()

Pygame.sprite.Sprite()Pygame.sprite.Sprite()Sprite.rect Sprite.rect 

Sprite.imageSprite.image

image = pygame.surface

 

5/11/2018 MiniCursoPygame - slidepdf.com

http://slidepdf.com/reader/full/minicursopygame 15/22

Sprite

Várias funcões do módulo sprite são para detecçãoVá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)

 e orna um oo n can o se as magens ose orna um oo n can o se as magens osdois 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

 

5/11/2018 MiniCursoPygame - slidepdf.com

http://slidepdf.com/reader/full/minicursopygame 16/22

Sprite

pygame.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 circularesDetecção de colisão usando áreas circulares

Outras fuções do módulo sprite, permitemOutras fuções do módulo sprite, permitemoutros tipos de verificação (por grupos deoutros tipos de verificação (por grupos desprites, por camada)sprites, por camada)

 

5/11/2018 MiniCursoPygame - slidepdf.com

http://slidepdf.com/reader/full/minicursopygame 17/22

Time

Módulo responsável pela informação sobre oMódulo responsável pela informação sobre otempo no jogo.tempo no jogo.

Muito útil em jogos que possuem movimentos eMuito útil em jogos que possuem movimentos es cas ca

Regula a movimentação dos objetos na telaRegula a movimentação dos objetos na tela

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

diferentesdiferentes

 

5/11/2018 MiniCursoPygame - slidepdf.com

http://slidepdf.com/reader/full/minicursopygame 18/22

Time

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

Cria um relógio queCria um relógio queserve para se obter aserve para se obter avariação de tempo aovariação de tempo aolongo do programalongo do programa

# Cria um relógio

clock = pygame.time.Clock()…

x , y = (10, 5)

vel_x, vel_y = 7, 3

Clock.tick()Clock.tick()

Retorna o tempo, emRetorna o tempo, emmilisegundos, desdemilisegundos, desdea última chamadaa última chamada

deste métododeste métodoDeve ser uma vezDeve ser uma vezpor looppor loop

 While True:delta_tempo =

clock.tick()

x += vel_x * delta_tempo

y += vel_y * delta_tempo

# S = S0 + v * t

 

5/11/2018 MiniCursoPygame - slidepdf.com

http://slidepdf.com/reader/full/minicursopygame 19/22

Font 

Permite renderizar TrueType Fonts (*.TTF) emPermite 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, especiais

. .. .

Carrega uma fonte do sistemaCarrega uma fonte do sistema

Formato suportado: TTFFormato suportado: TTF

# Carrega uma fonte colocada na pasta pessoal game_fonts

fonte_jogo =

 pygame.font.Font(“game_fonts”+os.sep+”showgothic_card.ttf”)

 

5/11/2018 MiniCursoPygame - slidepdf.com

http://slidepdf.com/reader/full/minicursopygame 20/22

Font 

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

Renderiza (Interpreta a fonte e converte em umaRenderiza (Interpreta a fonte e converte em umaimagem) o texto na cor desejadaimagem) o texto na cor desejada

re orno uma magem o ygame ur acere orno uma magem o ygame ur ace

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))

5/11/2018 MiniCursoPygame - slidepdf.com

http://slidepdf.com/reader/full/minicursopygame 21/22

 

5/11/2018 MiniCursoPygame - slidepdf.com

http://slidepdf.com/reader/full/minicursopygame 22/22

Referências. .. .

Beginning Game Development with Python andPygame, Will McGugan – Apress 2007.