Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Seminário sobre PyGame

Seminário sobre PyGame
by

João Gabriel Machado

on 5 December 2012

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Seminário sobre PyGame

Seminário sobre PyGame é uma biblioteca Gráfica, ou seja, um conjunto de módulos, a partir do qual é possível criar aplicações visuais próprios para jogos(utiliza SDL).
SDL significa "SimpleDirectMedia Layer", ele é uma biblioteca multimídia e multiplataforma escrita em C.
Com ele pode-ser interagir com o mouse, teclado, joystick e webcam. O que é PyGame? O que é um programa multiplataforma? Um programa multiplataforma é nada mais que um sistema que pode ser executado em vários sistemas diferentes. Vantagens Por ele ser multiplataforma ele tem a vantagem de ser portável, ou seja, ele pode ser instalado no Windows, Linux, MAC OS, etc. Instalando o PyGame Para instalar o PyGame você precisa acessar o link: http://www.pygame.org e clicar em download no canto direito Passo 2 Passo 1 Logo após isso, você procura a versão de pygame correspondente à sua versão de Python e clica nela para fazer o download Passo 3 Depois de ter finalizado a instalação do PyGame, abra a IDLE de Python e digite "import pygame" se não aparecer nada é porque PyGame foi instalado corretamente Como começar um jogo em PyGame? Primeiro você deverá saber quais são os primeiros comandos! Primeiros comandos import pygame
from sys import exit
from pygame.locals import *

import os Antes de tudo temos que importar o pygame Para poder fechar o programa Para importar todas as variáveis Para importar o módulo de comunicação do jogo todo com o SO Eventos Qual a principal característica de um jogo? Interagir com o jogador, ou seja, interagir com eventos Eventos do mouse pygame.mouse.get_pos Esse comando retorna uma tupla, ou seja, mais de um resultado. Ele retorna a posição atual do mouse, ou seja, suas coordenadas x e y. Lembrando que PyGame as coordenadas x e y são diferentes pygame.mouse.get_pressed Também retorna uma tupla. Retorna qual botão do mouse foi pressionado. Ele retorna três campos e cada campo corresponde a um botão: (button1, button2, button3) correpondente ao pressionamento de cada botão. Outras utilizações deste comando Você também pode fazer uma condição dependendo do botão clicado.
Colocando pygame.mouse.get_pressed()[0] vai retornar True se o botão clicado for o esquerdo.
Desde mesmo jeito você poderá fazer com os botões 1 e 2 só substituindo o 0 pelo número desejado. Eventos do teclado Pode-se capturar teclas pressionadas de dois jeitos Usando pygame.event.get() Esse comando retorna uma lista com todos os eventos capturados pelo Pygame, podendo assim, checar o tipo de evento Usando pygame.key.get_pressed() Retorna uma lista com vários campos onde cada campo é referente a uma tecla Algumas teclas em PyGame Constante Nome da tecla K_ESCAPE
K_RETURN
K_BACKSPACE
K_SPACE
K_a,K_b,K_c ... K_z
K_LEFT
K_RIGHT
K_UP
K-DOWN
K_0, K_1, ...,K_9
K_LSHIFT,K_RSHIFT
K_LCTRL,K_RCTRL
K_LALT,K_RALT "Esc"
Enter
Backspace
Barra de espaço
Teclas de A a Z
Seta para esquerda
Seta para direita
Seta para cima
Seta para baixo
Teclas de 1 a 9
Shift esquerdo ou direito
"ctrl" esquerdo ou direito
"alt" esquerdo ou direito Onde se encontra? http://www.pygame.org/docs/ref/key.html Onde encontrar
http://www.pygame.org/docs/ref/mouse.html Principais módulos Image Mixer Mixer.Music
Parte 1 Sprite Time Font Esta função lida com as imagens a serem usadas em python Você pode carregar imagens usando: pygame.image.load("PASTA_DA_IMAGEM" + os.sep + "NOME_DA_IMAGEM").convert()
Utiliza-se o .convert() para deixar sua imagem na mesma resolução do jogo PyGame suporta imagens nos formatos: BMP, TGA, GIF(não animado), JPEG, PNG, TGA, dentre outros tipos Você também pode usar o .convert_alpha() neste caso o fundo de sua imagem fica transparente, mas só se ele tiver no fundo a cor Magenta. Mas só no formato PNG Salvar imagens pygame.imagem.save(NOME_DO_ARQUIVO, "PASTA" + os.sep + "NOME_DO_ARQUIVO")
Se no comando anterior ele somente carrega a imagem, neste ele a salva uma imagem do pygame como uma imagem do sistema, ele suporta somente os formatos BMP, TGA, PNG, JPEG. Uma imagem em PyGame é um Surface pygame.mixer.stop() Este comando para a execução de todos os tipos de sons existentes no jogo pygame.mixer.unpause() Este é o contrário do anterior, ou seja, esse comando faz com que todos os sons que estiverem parados executem Mixer.sound pygame.mixer.Sound("NOME_DO_ARQUIVO")
Esta função pode carregar sons para o jogo, esta função suporta arquivos nos formatos OGG e WAV(descomprimido). Mas eles deverão ser sons rápidos, EX.: Tiros, ruidos, etc. Ele pode executar vários sons ao mesmo tempo. Para executar o som você dever fazer o seguinte: VARIÁVEL.play(1) Desse modo o som será executado somente uma vez Você pode também alterar o volume do audio usando o VARIÁVEL.set_volume(0<x<=1) Neste caso o audio é medido em float de 0 a 1. Este comando permite executar músicas com uma maior duração. Mas, neste comando você só poderá executar apenas uma música de cada vez. Suporta os formatos MP3 e OGG. Para executar uma música basta digitar o seguinte: pygame.mixer.music.load("NOME_DO_ARQUIVO") Para executar uma música infinitamente digite: pygame.mixer.music.play(-1) assim a música será infinitamente executado Mixer.music
Parte 2 Para ajustar o volume do audio basta digitar: pygame.mixer.music.set_volume(0<x<=1) pygame.mixer.music.fadeout(Nº)
Este comando diminui gradativamente o volume do audio de acordo com o tempo em milisegundos que está representado por "N°". Este módulo serve para representa um objeto internamente, não sendo um arquivo e nem uma classe. É como você reprentaria um personagem, uma arma, um inimigo, é uma forma que PyGame deixa o usuário reprentar tudo isso, ou seja, você pode representar personagens, o cenário do jogo, qualquer item no seu jogo que interaja com os outros As funções do módulo sprite lidam com esses objetos também chamados sprites. Um objeto sprite tem dois atributos inicialmente; deve ter o atributo rect e image Várias funções do módulo sprite são para detecção de colisão. Esta função verifica se dois objetos colidiram pygame.sprite.collide_mask(OBJETO_1,OBJETO_2) ele retorna True se estes objetos se chocarem. pygame.sprite.collide_rect(OBJETO_1,OBJETO_2)
Esse comando detecta a colisão de suas imagens, usando rect. Rect representa retângulos, com posição e dimensões. Parece irrelevante, mas é uma das classes mais úteis de todo PyGame pois ela fornece operações que são muito utilizadas, facilitando o desenvolvimento do jogo pygame.sprit.collide_circle(OBJETO_1,OBJETO_2)
Este comando detecta a colisão entre duas esferas com áreas circulares. Outras funções do módulo sprite permitem outros tipos de verificação ( por grupos de sprites, por camada) Esse módulo é o responsável pela informação sobre o tempo no jogo Este módulo é muito útil em jogos que possuem muitos movimentos e objetos acelerados. Ele regula a movimentação dos objetos na tela. Ele também evita a diferença de execução entre máquinas diferentes. pygame.time.Clock() Este comando cria um relógio que serve para obter a variação de tempo ao longo do programa clock.tick() Retorna o tempo, em milisegundos, desde a última chamada deste método. Uma vez por loop Ele permite a renderização do TrueType Fonts(*.TTF(tipo de fontes aceitas)) em imagens para o jogo pygame.font.Font(NOME_DO_ARQUIVO) Este comando carrega uma fonte do sistema na formato TTF font.render("TEXTO", True, COR) Renderiza(interpreta a fonte e converte em uma imagem) o texto na cor desejada.
O retorno é uma imagem do PyGame(Surface) Dúvidas??? Muito Obrigado pela atenção!!! Surface Surface são superfícies nas quais se desenha. Podem ser 2D ou 3D, residir em memóri do sistema ou da placa de vídeos e também ter várias profundidades de cores Operações essenciais fill(cor,area) Preenche uma área com a cor get_at(posicao) Pega a cor que está na posição set_at(posicao,cor) Muda a cor da superfície na posição blit(origem,posicao,area_origem Copia a parte limitada por area_origem da surperfície origem para a posição desejada na superfície atual. Profundidade de cor Em computação representamos uma superfície de desenho como uma matriz de pontos de cor. Dependendo do número de cores possíveis temos uma profundidade de cor e representamos de maneiras diferentes, algumas delas: 256 cores Este modo representa 256 possíveis e é indexado, isto é, temos uma palheta de cores com índices de 0 a 255, cada um com uma cor. Colisão Exemplo tamanho = ( 640 , 480 )
cor = ( 255 , 0 , 0 ) # v e rme lho
superficie = Surface ( tamanho )
superficie . set_at ( ( 10 , 20 ) , cor )
superficie . fill ( cor , ( 11 , 21 , 50 , 50 ) )
tela = pygame . display . set_mode ( tamanho ) display O múdulo display é utilizado para minipular a tela modos = pygame . display . list_modes ()
tela = pygame . display . set_mode ( modos [ 0 ] )
rect = pygame . Rect ( 0 , 0 , 10 , 10 )
pygame . display . set_caption ( " Teste do PyGame " )
while tela . get_rect (). contains ( rect ):
tela . fill ( ( 0 , 0 , 0 ) )
tela . fill ( ( 255 , 0 , 0 ) , rect )
rect . move_ip ( 10 , 10 )
pygame . display . flip () draw O PyGame tem vários recursos para desenhar nas superfícies from pygame . draw import line , circle , polygon
tela = pygame . display . get_surface ()
line ( tela , ( 255 , 0 , 0 ) , ( 0 , 0 ) , ( 10 , 10 ) )
circle ( tela , ( 0 , 255 , 0 ) , ( 20 , 20 ) , 20 , 2 )
rect ( tela , ( 0 , 0 , 255 ) , ( 10 , 10 , 50 , 50 ) )
polygon ( tela , ( 255 , 255 , 0 ) ,
[ ( 200 , 200 ) , ( 210 , 190 ) ,
( 220 , 200 ) , ( 210 , 210 ) ,
( 220 , 220 ) , ( 200 , 220 ) ] )
pygame . display . flip () if pygame . image . get_extended ():
nave = pygame . image . load ( " nave .png " )
else :
nave = pygame . image . load ( " nave .bmp " )
pygame . image . save ( tela , " screenshot .bmp " ) from pygame . locals import *
musica = pygame . mixer . Sound ( " musica_fundo .wav " )
efeito = pygame . mixer . Sound ( " efeito .wav " )
aviso = pygame . mixer . Sound ( " aviso .wav " )
musica . play ( -1 )
while True :
for e in pygame . event .get ( [ KEYDOWN ] ):
if e.key == K_SPACE :
efeito . play ()
elif e.key == K_ESCAPE :
musica . fadeout ( 1500 )
aviso . play () clock = pygame . time . Clock ()
FPS = 60
while True :
clock . tick ( FPS )
print " Quadros por segundo :" ,clock . get_fps () tela = pygame . display . set_mode ( ( 640 , 480 ) )
if pygame . font :
font = pygame . font . Font ( " fonte .ttf " , 12 )
font . set_underline ( True )
img = font . render ( "Ol´a Mundo " , True , ( 255 , 255 , 0 ) )
tela . blit ( img , ( 0 , 0 ) )
pygame . display . flip ()
Full transcript