eventos do - computação ufcgpet/atividades/minicurso_pygame/... · cada campo da cada campo da...
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))