SlideShare una empresa de Scribd logo
1 de 37
Descargar para leer sin conexión
Apoio
 Grupo PET Computação UFCG
  Tales Pimentel
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
  É possível, a partir de uma imagem, obter um rect
  (retângulo)
     Útil para detectar colisões
         colliderect(other_rect)
         collidepoint(point)
img = pygame.image.load(“img.png”).convert()
img2 = pygame.image.load(“img2.png”).convert()

rect1 = img.get_rect() #podemos mudar o centro com:
rect2 = img2.get_rect() #rect1.center = x, y

colidiu = rect1.colliderect(rect2)
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.

Más contenido relacionado

La actualidad más candente

Algoritmos de ordenação
Algoritmos de ordenaçãoAlgoritmos de ordenação
Algoritmos de ordenaçãoJonas Mendonça
 
Ejeteoria jose rivas
Ejeteoria jose rivasEjeteoria jose rivas
Ejeteoria jose rivasjose rivas
 
Programação em Banco de Dados - Aula 30/08/2018
Programação em Banco de Dados - Aula 30/08/2018Programação em Banco de Dados - Aula 30/08/2018
Programação em Banco de Dados - Aula 30/08/2018Elaine Cecília Gatto
 
Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)
Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)
Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)Leinylson Fontinele
 
Análise assintótica
Análise assintóticaAnálise assintótica
Análise assintóticaPablo Silva
 
Análise de Algoritmos - Recursividade
Análise de Algoritmos - RecursividadeAnálise de Algoritmos - Recursividade
Análise de Algoritmos - RecursividadeDelacyr Ferreira
 
Estrutura de dados em Java - Árvores Binárias
Estrutura de dados em Java - Árvores BináriasEstrutura de dados em Java - Árvores Binárias
Estrutura de dados em Java - Árvores BináriasAdriano Teixeira de Souza
 
Jogos em Python utilizando PyGame
Jogos em Python utilizando PyGameJogos em Python utilizando PyGame
Jogos em Python utilizando PyGameMayron Cachina
 
Minicurso - Introdução ao LaTeX
Minicurso - Introdução ao LaTeXMinicurso - Introdução ao LaTeX
Minicurso - Introdução ao LaTeXRodrigo Smarzaro
 
Algoritmos - Comandos de Repetição
Algoritmos - Comandos de RepetiçãoAlgoritmos - Comandos de Repetição
Algoritmos - Comandos de RepetiçãoElaine Cecília Gatto
 
Transforme Coordenadas Cartesianas Em Coordenadas Polares
Transforme Coordenadas Cartesianas Em Coordenadas PolaresTransforme Coordenadas Cartesianas Em Coordenadas Polares
Transforme Coordenadas Cartesianas Em Coordenadas Polaresguestacf86e
 
Arquitetura de Sistemas Operacionais 32 x 64 Bits
Arquitetura de Sistemas Operacionais 32 x 64 BitsArquitetura de Sistemas Operacionais 32 x 64 Bits
Arquitetura de Sistemas Operacionais 32 x 64 BitsCleber Ramos
 
Aulas 1 e 2 - Hardware
Aulas 1 e 2 - HardwareAulas 1 e 2 - Hardware
Aulas 1 e 2 - HardwareJocelma Rios
 

La actualidad más candente (20)

Algoritmos de ordenação
Algoritmos de ordenaçãoAlgoritmos de ordenação
Algoritmos de ordenação
 
Ejeteoria jose rivas
Ejeteoria jose rivasEjeteoria jose rivas
Ejeteoria jose rivas
 
Padrões de Projeto para Jogos
Padrões de Projeto para JogosPadrões de Projeto para Jogos
Padrões de Projeto para Jogos
 
Programação em Banco de Dados - Aula 30/08/2018
Programação em Banco de Dados - Aula 30/08/2018Programação em Banco de Dados - Aula 30/08/2018
Programação em Banco de Dados - Aula 30/08/2018
 
Intro PyGame Capitulo 1
Intro PyGame Capitulo 1Intro PyGame Capitulo 1
Intro PyGame Capitulo 1
 
Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)
Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)
Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)
 
Estrutura de dados - Filas
Estrutura de dados - FilasEstrutura de dados - Filas
Estrutura de dados - Filas
 
Análise assintótica
Análise assintóticaAnálise assintótica
Análise assintótica
 
Estrutura de Dados - Registros
Estrutura de Dados - RegistrosEstrutura de Dados - Registros
Estrutura de Dados - Registros
 
Análise de Algoritmos - Recursividade
Análise de Algoritmos - RecursividadeAnálise de Algoritmos - Recursividade
Análise de Algoritmos - Recursividade
 
Estrutura de dados em Java - Árvores Binárias
Estrutura de dados em Java - Árvores BináriasEstrutura de dados em Java - Árvores Binárias
Estrutura de dados em Java - Árvores Binárias
 
Manual básico de conversão de pseudocódigo para C#
Manual básico de conversão de pseudocódigo para C#Manual básico de conversão de pseudocódigo para C#
Manual básico de conversão de pseudocódigo para C#
 
Jogos em Python utilizando PyGame
Jogos em Python utilizando PyGameJogos em Python utilizando PyGame
Jogos em Python utilizando PyGame
 
Minicurso - Introdução ao LaTeX
Minicurso - Introdução ao LaTeXMinicurso - Introdução ao LaTeX
Minicurso - Introdução ao LaTeX
 
Algoritmos - Comandos de Repetição
Algoritmos - Comandos de RepetiçãoAlgoritmos - Comandos de Repetição
Algoritmos - Comandos de Repetição
 
Transforme Coordenadas Cartesianas Em Coordenadas Polares
Transforme Coordenadas Cartesianas Em Coordenadas PolaresTransforme Coordenadas Cartesianas Em Coordenadas Polares
Transforme Coordenadas Cartesianas Em Coordenadas Polares
 
Fatoração
FatoraçãoFatoração
Fatoração
 
Sobre o teclado
Sobre o tecladoSobre o teclado
Sobre o teclado
 
Arquitetura de Sistemas Operacionais 32 x 64 Bits
Arquitetura de Sistemas Operacionais 32 x 64 BitsArquitetura de Sistemas Operacionais 32 x 64 Bits
Arquitetura de Sistemas Operacionais 32 x 64 Bits
 
Aulas 1 e 2 - Hardware
Aulas 1 e 2 - HardwareAulas 1 e 2 - Hardware
Aulas 1 e 2 - Hardware
 

Destacado

Criando jogos com python e pygame 3 aula
Criando jogos com python e pygame 3 aulaCriando jogos com python e pygame 3 aula
Criando jogos com python e pygame 3 aulaDiego Lopes
 
Criando jogos com python e pygame 2 aula
Criando jogos com python e pygame 2 aulaCriando jogos com python e pygame 2 aula
Criando jogos com python e pygame 2 aulaDiego Lopes
 
Curso de progrmação para crianças e adolescentes
Curso de progrmação para crianças e adolescentesCurso de progrmação para crianças e adolescentes
Curso de progrmação para crianças e adolescentesRicardo Henrique Roson
 
Criando jogos com python e pygame 4 aula
Criando jogos com python e pygame 4 aulaCriando jogos com python e pygame 4 aula
Criando jogos com python e pygame 4 aulaDiego Lopes
 
Como Fazer Jogos com Python (ou Apresentando a PyGame)
Como Fazer Jogos com Python (ou Apresentando a PyGame)Como Fazer Jogos com Python (ou Apresentando a PyGame)
Como Fazer Jogos com Python (ou Apresentando a PyGame)Diego Dukão
 
Algoritmos - Comandos de Controle de Programa
Algoritmos - Comandos de Controle de ProgramaAlgoritmos - Comandos de Controle de Programa
Algoritmos - Comandos de Controle de ProgramaElaine Cecília Gatto
 
Material de Apoio de Algoritmo e Lógica de Programação
Material de Apoio de Algoritmo e Lógica de ProgramaçãoMaterial de Apoio de Algoritmo e Lógica de Programação
Material de Apoio de Algoritmo e Lógica de Programaçãorodfernandes
 
Apresentação pygame
Apresentação pygameApresentação pygame
Apresentação pygameDanilo Costa
 
5 coisas que você precisa saber antes de começar a fazer seus jogos
5 coisas que você precisa saber antes de começar a fazer seus jogos5 coisas que você precisa saber antes de começar a fazer seus jogos
5 coisas que você precisa saber antes de começar a fazer seus jogosDiego Dukão
 
aula 05 - Logica de programacao
aula 05 - Logica de programacaoaula 05 - Logica de programacao
aula 05 - Logica de programacaoAislan Rafael
 
aula 10 logica de programacao
aula 10 logica de programacaoaula 10 logica de programacao
aula 10 logica de programacaoAislan Rafael
 
aula 11 de logica de programacao
aula 11 de logica de programacaoaula 11 de logica de programacao
aula 11 de logica de programacaoAislan Rafael
 
aula 07 - Logica de programacao
aula 07 - Logica de programacaoaula 07 - Logica de programacao
aula 07 - Logica de programacaoAislan Rafael
 
aula 06 - Logica de programacao
aula 06 - Logica de programacaoaula 06 - Logica de programacao
aula 06 - Logica de programacaoAislan Rafael
 
Aula 02 - Lógica de Programação
Aula 02 - Lógica de ProgramaçãoAula 02 - Lógica de Programação
Aula 02 - Lógica de ProgramaçãoAislan Rafael
 

Destacado (20)

Criando jogos com python e pygame 3 aula
Criando jogos com python e pygame 3 aulaCriando jogos com python e pygame 3 aula
Criando jogos com python e pygame 3 aula
 
Criando jogos com python e pygame 2 aula
Criando jogos com python e pygame 2 aulaCriando jogos com python e pygame 2 aula
Criando jogos com python e pygame 2 aula
 
Curso de progrmação para crianças e adolescentes
Curso de progrmação para crianças e adolescentesCurso de progrmação para crianças e adolescentes
Curso de progrmação para crianças e adolescentes
 
Criando jogos com python e pygame 4 aula
Criando jogos com python e pygame 4 aulaCriando jogos com python e pygame 4 aula
Criando jogos com python e pygame 4 aula
 
Como Fazer Jogos com Python (ou Apresentando a PyGame)
Como Fazer Jogos com Python (ou Apresentando a PyGame)Como Fazer Jogos com Python (ou Apresentando a PyGame)
Como Fazer Jogos com Python (ou Apresentando a PyGame)
 
Algoritmos - Comandos de Controle de Programa
Algoritmos - Comandos de Controle de ProgramaAlgoritmos - Comandos de Controle de Programa
Algoritmos - Comandos de Controle de Programa
 
Ensinando OO com Python
Ensinando OO com PythonEnsinando OO com Python
Ensinando OO com Python
 
Material de Apoio de Algoritmo e Lógica de Programação
Material de Apoio de Algoritmo e Lógica de ProgramaçãoMaterial de Apoio de Algoritmo e Lógica de Programação
Material de Apoio de Algoritmo e Lógica de Programação
 
Curso gratuitoshellscript nivel-2
Curso gratuitoshellscript nivel-2Curso gratuitoshellscript nivel-2
Curso gratuitoshellscript nivel-2
 
Python para Desenvolvedores
Python para DesenvolvedoresPython para Desenvolvedores
Python para Desenvolvedores
 
Mini Curso Python
Mini Curso PythonMini Curso Python
Mini Curso Python
 
Apresentação pygame
Apresentação pygameApresentação pygame
Apresentação pygame
 
5 coisas que você precisa saber antes de começar a fazer seus jogos
5 coisas que você precisa saber antes de começar a fazer seus jogos5 coisas que você precisa saber antes de começar a fazer seus jogos
5 coisas que você precisa saber antes de começar a fazer seus jogos
 
aula 05 - Logica de programacao
aula 05 - Logica de programacaoaula 05 - Logica de programacao
aula 05 - Logica de programacao
 
aula 10 logica de programacao
aula 10 logica de programacaoaula 10 logica de programacao
aula 10 logica de programacao
 
Algoritmos - Comandos de Seleção
Algoritmos - Comandos de SeleçãoAlgoritmos - Comandos de Seleção
Algoritmos - Comandos de Seleção
 
aula 11 de logica de programacao
aula 11 de logica de programacaoaula 11 de logica de programacao
aula 11 de logica de programacao
 
aula 07 - Logica de programacao
aula 07 - Logica de programacaoaula 07 - Logica de programacao
aula 07 - Logica de programacao
 
aula 06 - Logica de programacao
aula 06 - Logica de programacaoaula 06 - Logica de programacao
aula 06 - Logica de programacao
 
Aula 02 - Lógica de Programação
Aula 02 - Lógica de ProgramaçãoAula 02 - Lógica de Programação
Aula 02 - Lógica de Programação
 

Similar a Pygame Introdução Módulos

Desenvolvendo Jogos com pygame.
Desenvolvendo Jogos com pygame.Desenvolvendo Jogos com pygame.
Desenvolvendo Jogos com pygame.Tchelinux
 
Júlio Pescuite - Advanced Topics for Game Developers
Júlio Pescuite - Advanced Topics for Game DevelopersJúlio Pescuite - Advanced Topics for Game Developers
Júlio Pescuite - Advanced Topics for Game DevelopersiMasters
 
Advanced topics for game developers
Advanced topics for game developersAdvanced topics for game developers
Advanced topics for game developersjuliocoopergames
 
Desenvolvimento de Jogos com Corona SDK
Desenvolvimento de Jogos com Corona SDKDesenvolvimento de Jogos com Corona SDK
Desenvolvimento de Jogos com Corona SDKBruno Cicanci
 
Desenvolvendo jogos com pygame
Desenvolvendo jogos com pygameDesenvolvendo jogos com pygame
Desenvolvendo jogos com pygameTchelinux
 
Desenvolvendo Jogos com pygame - Rafael Guterres Jeffman - Tchelinux Caxias d...
Desenvolvendo Jogos com pygame - Rafael Guterres Jeffman - Tchelinux Caxias d...Desenvolvendo Jogos com pygame - Rafael Guterres Jeffman - Tchelinux Caxias d...
Desenvolvendo Jogos com pygame - Rafael Guterres Jeffman - Tchelinux Caxias d...Tchelinux
 
Desenvolvimento de jogos para android com andengine
Desenvolvimento de jogos para android com andengineDesenvolvimento de jogos para android com andengine
Desenvolvimento de jogos para android com andengineDiego Lopes
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 3
Implementação de Aplicações Móveis e Jogos com Python - Aula 3Implementação de Aplicações Móveis e Jogos com Python - Aula 3
Implementação de Aplicações Móveis e Jogos com Python - Aula 3Flávio Ribeiro
 
Criação de jogos game maker - férias
Criação de jogos   game maker - fériasCriação de jogos   game maker - férias
Criação de jogos game maker - fériasInstituto Inovar
 
Oficina Android - Games com AndEngine - Dia 2
Oficina Android - Games com AndEngine - Dia 2Oficina Android - Games com AndEngine - Dia 2
Oficina Android - Games com AndEngine - Dia 2Odair Bonin Borges
 
Oficina Android - Games com AndEngine - Dia 3
Oficina Android - Games com AndEngine - Dia 3Oficina Android - Games com AndEngine - Dia 3
Oficina Android - Games com AndEngine - Dia 3Odair Bonin Borges
 
TDC2011 - Desenvolvimento de jogos com Javascript e HTML5
TDC2011 - Desenvolvimento de jogos com Javascript e HTML5TDC2011 - Desenvolvimento de jogos com Javascript e HTML5
TDC2011 - Desenvolvimento de jogos com Javascript e HTML5Willian Molinari
 
Computação Gráfica em Python
Computação Gráfica em PythonComputação Gráfica em Python
Computação Gráfica em Pythongsroma
 
Tutorial de introdução à API da BGE
Tutorial de introdução à API da BGETutorial de introdução à API da BGE
Tutorial de introdução à API da BGESolano
 
Processo de desenvolvimento de Jogos.pdf
Processo de desenvolvimento de Jogos.pdfProcesso de desenvolvimento de Jogos.pdf
Processo de desenvolvimento de Jogos.pdfJean Marie Jhon
 
Desenvolvendo jogos com PyGame - Rafael Jeffman
Desenvolvendo jogos com PyGame - Rafael JeffmanDesenvolvendo jogos com PyGame - Rafael Jeffman
Desenvolvendo jogos com PyGame - Rafael JeffmanTchelinux
 

Similar a Pygame Introdução Módulos (20)

Idez
IdezIdez
Idez
 
Desenvolvendo Jogos com pygame.
Desenvolvendo Jogos com pygame.Desenvolvendo Jogos com pygame.
Desenvolvendo Jogos com pygame.
 
Júlio Pescuite - Advanced Topics for Game Developers
Júlio Pescuite - Advanced Topics for Game DevelopersJúlio Pescuite - Advanced Topics for Game Developers
Júlio Pescuite - Advanced Topics for Game Developers
 
Advanced topics for game developers
Advanced topics for game developersAdvanced topics for game developers
Advanced topics for game developers
 
Desenvolvimento de Jogos com Corona SDK
Desenvolvimento de Jogos com Corona SDKDesenvolvimento de Jogos com Corona SDK
Desenvolvimento de Jogos com Corona SDK
 
Desenvolvendo jogos com pygame
Desenvolvendo jogos com pygameDesenvolvendo jogos com pygame
Desenvolvendo jogos com pygame
 
Desenvolvendo Jogos com pygame - Rafael Guterres Jeffman - Tchelinux Caxias d...
Desenvolvendo Jogos com pygame - Rafael Guterres Jeffman - Tchelinux Caxias d...Desenvolvendo Jogos com pygame - Rafael Guterres Jeffman - Tchelinux Caxias d...
Desenvolvendo Jogos com pygame - Rafael Guterres Jeffman - Tchelinux Caxias d...
 
Desenvolvimento de jogos para android com andengine
Desenvolvimento de jogos para android com andengineDesenvolvimento de jogos para android com andengine
Desenvolvimento de jogos para android com andengine
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 3
Implementação de Aplicações Móveis e Jogos com Python - Aula 3Implementação de Aplicações Móveis e Jogos com Python - Aula 3
Implementação de Aplicações Móveis e Jogos com Python - Aula 3
 
Criação de jogos game maker - férias
Criação de jogos   game maker - fériasCriação de jogos   game maker - férias
Criação de jogos game maker - férias
 
Oficina Android - Games com AndEngine - Dia 2
Oficina Android - Games com AndEngine - Dia 2Oficina Android - Games com AndEngine - Dia 2
Oficina Android - Games com AndEngine - Dia 2
 
Oficina Android - Games com AndEngine - Dia 3
Oficina Android - Games com AndEngine - Dia 3Oficina Android - Games com AndEngine - Dia 3
Oficina Android - Games com AndEngine - Dia 3
 
TDC2011 - Desenvolvimento de jogos com Javascript e HTML5
TDC2011 - Desenvolvimento de jogos com Javascript e HTML5TDC2011 - Desenvolvimento de jogos com Javascript e HTML5
TDC2011 - Desenvolvimento de jogos com Javascript e HTML5
 
Computação Gráfica em Python
Computação Gráfica em PythonComputação Gráfica em Python
Computação Gráfica em Python
 
Tutorial de introdução à API da BGE
Tutorial de introdução à API da BGETutorial de introdução à API da BGE
Tutorial de introdução à API da BGE
 
Aula menus
Aula menusAula menus
Aula menus
 
Biblioteca Allegro
Biblioteca AllegroBiblioteca Allegro
Biblioteca Allegro
 
Tutorial Desenvolvendo Pong no Unity 3D - Victory Island Studios
Tutorial Desenvolvendo Pong no Unity 3D - Victory Island StudiosTutorial Desenvolvendo Pong no Unity 3D - Victory Island Studios
Tutorial Desenvolvendo Pong no Unity 3D - Victory Island Studios
 
Processo de desenvolvimento de Jogos.pdf
Processo de desenvolvimento de Jogos.pdfProcesso de desenvolvimento de Jogos.pdf
Processo de desenvolvimento de Jogos.pdf
 
Desenvolvendo jogos com PyGame - Rafael Jeffman
Desenvolvendo jogos com PyGame - Rafael JeffmanDesenvolvendo jogos com PyGame - Rafael Jeffman
Desenvolvendo jogos com PyGame - Rafael Jeffman
 

Pygame Introdução Módulos

  • 1.
  • 2. Apoio Grupo PET Computação UFCG Tales Pimentel
  • 3. Agenda Introdução a Pygame Como funciona um jogo em Pygame? Eventos: mouse e teclado Principais módulos
  • 4. 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.
  • 5. Introdução http://www.pygame.org
  • 6. 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
  • 7. 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 >>>
  • 8. Introdução Instalando Num SO Linux, é possível instalar com o seguinte comando sudo apt-get install python-pygame
  • 9. Como funciona um jogo em Pygame ? Um “Hello World” exibindo uma imagem (p1_HelloWorld.py) exibindo um texto (p2_HelloWorld2.py)
  • 10. 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
  • 11. Como funciona um jogo em Pygame ? Capturando events (p4_bouncer.py) pygame.event.get() Retorna uma lista de eventos QUIT KEYDOWN KEYUP MOUSEBUTTONUP MOUSEBUTTONDOWN
  • 12. Como funciona um jogo em Pygame ? Utilizando events event.type event.key Utilizando key, mouse key.get_pressed() mouse.get_pressed) mouse.get_pos()
  • 13. 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
  • 14. 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: ...
  • 15. 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
  • 16. 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
  • 17. Onde encontrar? Documentação do Pygame Mouse: http://www.pygame.org/docs/ref/mouse.html Teclado: http://www.pygame.org/docs/ref/key.html
  • 18. 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
  • 19. 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()
  • 20. Image Para que os códigos anteriores funcionem corretamente, veja a organização dos arquivos: programa.py images/ pedra.gif objetos/ garrafa.png
  • 21. 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”)
  • 22. Image É possível, a partir de uma imagem, obter um rect (retângulo) Útil para detectar colisões colliderect(other_rect) collidepoint(point) img = pygame.image.load(“img.png”).convert() img2 = pygame.image.load(“img2.png”).convert() rect1 = img.get_rect() #podemos mudar o centro com: rect2 = img2.get_rect() #rect1.center = x, y colidiu = rect1.colliderect(rect2)
  • 23. 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
  • 24. 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
  • 25. 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)])
  • 26. 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
  • 27. 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
  • 28. 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
  • 29. 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
  • 30. 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
  • 31. 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)
  • 32. 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
  • 33. 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
  • 34. 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”)
  • 35. 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))
  • 36.
  • 37. Referências http://www.pygame.org/ Beginning Game Development with Python and Pygame, Will McGugan – Apress 2007.