eventos do - computação ufcgpet/atividades/minicurso_pygame/... · cada campo da cada campo da...

22

Upload: ngohuong

Post on 21-Jan-2019

214 views

Category:

Documents


0 download

TRANSCRIPT

Eventos do mouse

pygamepygame.mouse..mouse.get_posget_pos()()

Retorna uma Retorna uma tuplatupla (x, y) referente à posição(x, y) referente à posição

pygamepygame.mouse..mouse.get_pressedget_pressed()()

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

Cada campo da Cada campo da tuplatupla é um é um booleanboolean

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

Eventos do teclado

Podemos capturar as teclas pressionadas de Podemos capturar as teclas pressionadas de duas formas:duas formas:duas formas:duas formas:Usando o Usando o pygamepygame..eventevent..getget():():

# 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:

...

Eventos do teclado

Ou usando o Ou usando o pygamepygame..keykey..get_pressedget_pressed(), que retorna (), que retorna uma lista com uma lista com booleansbooleans::uma lista com uma lista com booleansbooleans::

As constantes (K_ESCAPE, As constantes (K_ESCAPE, K_fK_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] :...

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

K_a, K_b, ..., K_z Teclas de A a Z

Algumas teclas

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 Documentaçã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

Principais Módulos

Image Image –– Manipulação de imagens do sistemaManipulação de imagens do sistema

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

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

Sprite Sprite –– Objetos de colisão, ex: personagensObjetos de colisão, ex: personagens

Time Time –– Manipulação do tempo no jogoManipulação do tempo no jogo

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

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

Formatos suportados: BMP, TGA, GIF (não Formatos suportados: BMP, TGA, GIF (não Formatos 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()

Image

Para que os códigos anteriores funcionem Para 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.gifpedra.gifobjetos/objetos/

garrafa.pnggarrafa.png

Image

Pygame.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” )

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

Sound

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

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

Formatos suportados: OGG e WAV (Descompressado)Formatos suportados: OGG e WAV (Descompressado)Formatos suportados: OGG e WAV (Descompressado)Formatos suportados: OGG e WAV (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

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

Sprite

Módulo próprio para os Módulo próprio para os objetos, personagens, e objetos, personagens, e cenário do jogocenário do jogo

Um 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

rect = (x, y)

Sprite bola

jogo. Possui uma posição jogo. Possui uma posição (na tela) e uma imagem(na tela) e uma imagem

As 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.rect

Sprite.imageSprite.image

image = pygame.surface

Sprite

Vá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 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

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

Time

Mó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 e Muito útil em jogos que possuem movimentos e físicafísicafísicafísica

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

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

Time

pygame.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 programa

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

Clock.tick()Clock.tick()

Retorna o tempo, em Retorna o tempo, em milisegundos, desde milisegundos, desde a última chamada a última chamada deste métododeste método

Deve ser uma vez Deve ser uma vez por looppor loop

…While True :

delta_tempo = clock. tick()

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

# S = S0 + v * t

Font

Permite renderizar TrueType Fonts (*.TTF) em Permite renderizar TrueType Fonts (*.TTF) em imagens para o jogoimagens para o jogo

Permite a utilização de fontes extras, especiaisPermite a utilização de fontes extras, especiais

pygame.font.Font(filename)pygame.font.Font(filename)pygame.font.Font(filename)pygame.font.Font(filename)

Carrega uma fonte do sistemaCarrega uma fonte do sistema

Formato suportado: TTFFormato suportado: TTF

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

Font

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

Renderiza (Interpreta a fonte e converte em uma Renderiza (Interpreta a fonte e converte em uma imagem) o texto na cor desejadaimagem) o texto na cor desejada

O retorno é uma imagem do Pygame (Surface)O retorno é uma imagem do Pygame (Surface)O 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))

Referências

http://www.pygame.org/http://www.pygame.org/http://www.pygame.org/http://www.pygame.org/

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