Sunteți pe pagina 1din 46

Programao de Jogos em Python ca

Programao de Jogos em Python ca


Gustavo Sverzut Barbieri
GPSL - UNICAMP

28 de abril de 2005

Gustavo Sverzut Barbieri

Programao de Jogos em Python ca

Programao de Jogos em Python ca

1 Introduo ca 2 Elementos Essenciais do PyGame 3 Sprite e Grupos 4 Referncias e Materiais de Apoio e

Gustavo Sverzut Barbieri

Programao de Jogos em Python ca

Programao de Jogos em Python ca Introduo ca Por que Python?

Python fcil! e a

Linguagem de alto n bem parecida com o modo que pensamos, vel ideal para fazer a inteligncia de um jogo e
for elemento in elementos : if elemento . tipo in tipos_inimigos : atir e_no_elemento ( elemento )

Gustavo Sverzut Barbieri

Programao de Jogos em Python ca

Programao de Jogos em Python ca Introduo ca Por que Python?

Outras vantagens do Python


Multi-plataforma Orientada a Objetos: encapsulamento Dinmica a Vasta biblioteca padro e bibliotecas de terceiros a Grande comunidade de desenvolvedores Fcil de interagir com outras linguagens, em especial C a Geral o bastante para ajudar em reas diversas, como: a
Automatizao de processos de desenvolvimento ca Ajudar que roteiristas e artistas experimentem com diversos efeitos, sem que necessitem de um vasto conhecimento de programao ca

Gustavo Sverzut Barbieri

Programao de Jogos em Python ca

Programao de Jogos em Python ca Introduo ca Por que Python?

Problemas e Solues co
Nem tudo so maravilhas, o principal problema : a e Python lento: Python no ideal para fazer processamento de e a e imagens, iteraes sobre grandes matrizes etc. co Soluo: Quando a velocidade comear a ser um ca c problema, analise o seu cdigo em um proler e o otimze tal regio, talvez implemente-a em a C/Assembly. Na verdade grande parte disso j est feito, o PyGame utiliza a a a biblioteca SDL, que feita em C. Existem tambm implementaes e e co de engines bem otimzados que so utilizveis no Python. a a

Gustavo Sverzut Barbieri

Programao de Jogos em Python ca

Programao de Jogos em Python ca Introduo ca Por que PyGame?

PyGame
Como o Python, multiplataforma e Fcil de utilizar a Possui bastante recursos Rpida o suciente a
import pygame pygame . init () screen = pygame . display . set_mode ( ( 800 , 600 ) ) image = pygame . image . load ( " minha_imagem . png " ) while True : for event in pygame . event . get (): if event . type == pygame . QUIT : break screen . fill ( ( 0 , 0 , 0 ) ) screen . blit ( image , image . get_rect () ) pygame . display . flip ()
Gustavo Sverzut Barbieri Programao de Jogos em Python ca

Programao de Jogos em Python ca Elementos Essenciais do PyGame Surface

Surface o que ? e
Surface so superf a cies nas quais se desenha. Podem ser 2D ou 3D, residir em memria do sistema ou da placa de v o deo e tambm e ter vrias profundidades de cores. a tamanho = ( 640 , 480 ) cor = ( 255 , 0 , 0 ) # v e r m e l h o superficie = Surface ( tamanho ) superficie . set_at ( ( 10 , 20 ) , cor ) superficie . fill ( cor , ( 11 , 21 , 50 , 50 ) ) tela = pygame . display . set_mode ( tamanho )

Gustavo Sverzut Barbieri

Programao de Jogos em Python ca

Programao de Jogos em Python ca Elementos Essenciais do PyGame Surface

Surface operaes essenciais co

ll( cor, area ) Preenche uma rea com a cor a get at( posicao ) Pega a cor que est na posio a ca set at( posicao, cor ) Muda a cor da superf na posio cie ca blit( origem, posicao, area origem ) Copia a parte limitada por area_origem da superf origem para a posio cie ca desejada na superf atual. cie

Gustavo Sverzut Barbieri

Programao de Jogos em Python ca

Programao de Jogos em Python ca Elementos Essenciais do PyGame Surface

Surface profundidade de cor


Em computao representamos uma superf de desenho como ca cie uma matriz de pontos de cor. Dependendo do nmero de cores u poss veis temos uma profundidade de cor e representamos de maneiras diferentes, algumas delas: 256 cores Este modo representa 256 cores poss veis e e indexado, isto , temos uma palheta de cores com e ndices de 0 a 255, cada um com uma cor. 24bpp RGB Tambm conhecido com 16 milhes de cores. Este e o modo representa cada cor com 3 bytes (da o nome 24 bits per pixel) e no formato RGB utiliza-se o primeiro byte para 256 tons de vermelho, o segundo para verde e o terceiro para o azul.
Gustavo Sverzut Barbieri Programao de Jogos em Python ca

Programao de Jogos em Python ca Elementos Essenciais do PyGame Surface

Surface transparncias e
As superf cies suportam 3 tipos de transparncia: e Colorkey neste modo uma cor designada para representar a e transparncia, isto , ao fazer o blit os pontos com e e esta cor no sero copiados. a a Image Alpha neste modo a superf como um todo tem um valor cie de translucidez entre 0 (transparente) e 255 (opaco), ao fazer o blit desta superf em outra cada ponto cie resultante uma mdia da origem com o destino e e proporcional a este valor. Este modo pode ser utilizado em conjunto com o colorkey Per-Pixel Alpha neste modo cada ponto da superf tem um cie componente de Alpha associado que levado em e conta na hora do blit. Estas superf cies so chamadas a de 32bpp RGBA. Este modo no pode ser utilizado a com os dois primeiros.
Gustavo Sverzut Barbieri Programao de Jogos em Python ca

Programao de Jogos em Python ca Elementos Essenciais do PyGame Surface

Surface convertendo profundidade de cor


Toda vez que se faz um blit() convertemos a profundidade de cor da superf de origem para car equivalente ` superf de cie a cie destino, isto uma operao muito custosa e nem sempre e ca precisamos faz-la, pois podemos deixar as superf e cies j a convertidas. Eliminando este passo podemos deixar o programa at 6 vezes e mais rpido! a
sup = sup . convert () # c o n v e r t e p a r a a t e l a img = pygame . image . load ( " img . png " ). convert ( sup )

Quando no usar: quando se quer utilizar per-pixel alpha no a a converta para a profundidade de cor da tela, pois ele perder tal a recurso, neste caso utilize convert_alpha().
Gustavo Sverzut Barbieri Programao de Jogos em Python ca

Programao de Jogos em Python ca Elementos Essenciais do PyGame Rect

Rect o que ? e
Rect representa retngulos, com posio e dimenses. Parece a ca o

irelevante, mas uma das classes mais uteis de todo PyGame pois e ela fornece operaes que so muito utilizadas, facilitando o co a desenvolvimento do jogo
r = Rect ( ( 10 , 10 , 50 , 100 ) ) print r . top , r . bottom # 1 0 1 1 0 print r . left , r . right # 1 0 6 0 print r . midtop , r . midleft # ( 3 5 , 1 0 ) ( 1 0 , 6 0 ) print r . center # ( 3 5 , 6 0 ) c1 = r . collidepoint ( 30 , 40 ) c2 = r . colliderect ( ( 0 , 0 , 100 , 200 ) ) r2 = r . inflate ( 10 , 10 ) r2 . move_ip ( 5 , 5 )

Gustavo Sverzut Barbieri

Programao de Jogos em Python ca

Programao de Jogos em Python ca Elementos Essenciais do PyGame Rect

Rect operaes essenciais co


clamp( area ) retorna um novo retngulo que foi movido para car a dentro de area. Util para limitar movimento dentro de um espao. c clip( area ) retorna um novo retngulo com a area cortada para a caber no retngulo atual. a collidepoint( x, y ) verica se o ponto est dentro do retngulo a a atual. colliderect( area ) verica se a area intercepta o retngulo atual. a contains( area ) verica se a area est dentro do retngulo atual. a a inate( x, y ) retorna um novo retngulo com as dimenses do a o retngulo atual aumentadas pelos valores passados. a move( x, y ) retorna um novo retngulo com as posies do a co retngulo atual movida pelos valores passados. a
Gustavo Sverzut Barbieri Programao de Jogos em Python ca

Programao de Jogos em Python ca Elementos Essenciais do PyGame Display

display o que ? e
O mdulo display utilizado para manipular a tela. o e
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 ()

Gustavo Sverzut Barbieri

Programao de Jogos em Python ca

Programao de Jogos em Python ca Elementos Essenciais do PyGame Display

display operaes essenciais co


ip() atualiza o contedo da tela toda. u get surface() retorna a superf que representa a tela. cie list modes() lista poss veis dimenses. o set caption( titulo ) muda o t tulo da janela. set mode( tamanho ) congura a tela para o dado tamanho e retorna a superf cie. toggle fullscreen() coloca a janela em tela cheia. update( lista retangulos ) atualiza as reas da tela determinadas a por lista_retangulos.

Gustavo Sverzut Barbieri

Programao de Jogos em Python ca

Programao de Jogos em Python ca Elementos Essenciais do PyGame Display

display cuidados especiais


Toda vez que a janela de um aplicativo PyGame for sobreposta por outra janela, a rea car negra (suja) at que a a e comum ao fazer testes no prompt a tela seja atualizada. E cobrir a janela e depois no se v o resultado da operao, a e ca neste caso descubra a janela e faa pygame.display.flip(). c Atualize somente as reas necessrias! Se quiser aumentar a a o desempenho do seu jogo, atualize a tela somente nas reas a que voc modicou. Por exemplo, se voc tem um e e componente em movimento, apague a imagem da posio ca antiga (provavelmente desenhando o pedao da imagem de c fundo no local), desenha a imagem na posio nova e atualize ca somente estas duas reas. Esta tcnica chamada de Dirty a e e Rectangles.
Gustavo Sverzut Barbieri Programao de Jogos em Python ca

Programao de Jogos em Python ca Elementos Essenciais do PyGame Draw

draw o que ? e
O PyGame tem vrios recursos para desenhar nas superf a 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 ()

Gustavo Sverzut Barbieri

Programao de Jogos em Python ca

Programao de Jogos em Python ca Elementos Essenciais do PyGame Draw

draw operaes essenciais co

line( supercie, cor, inicio, m, espessura ) desenha uma linha. circle( supercie, cor, posicao, raio, espessura ) desenha um c rculo. rect( supercie, cor, retangulo, espessura ) desenha um retngulo. a polygon( supercie, cor, lista pontos, espessura ) desenha um pol gono.

Gustavo Sverzut Barbieri

Programao de Jogos em Python ca

Programao de Jogos em Python ca Elementos Essenciais do PyGame Image

image o que ? e

O PyGame tem recursos para ler e salvar imagens. Por padro o a formato Bitmap(BMP) suportado, porm se a biblioteca e e SDL Image estiver instalada vrios outros formatos sero a a suportados, dentre eles PNG, GIF, JPEG.
if pygame . image . get_extended (): nave = pygame . image . load ( " nave . png " ) else : nave = pygame . image . load ( " nave . bmp " ) pygame . image . save ( tela , " screenshot . bmp " )

Gustavo Sverzut Barbieri

Programao de Jogos em Python ca

Programao de Jogos em Python ca Elementos Essenciais do PyGame Image

image operaes essenciais co

load( arquivo ) l a imagem do arquivo. e save( supercie, arquivo ) salva a superf em um arquivo. cie get extended() retorna verdadeiro se a biblioteca SDL Image estiver instalada.

Gustavo Sverzut Barbieri

Programao de Jogos em Python ca

Programao de Jogos em Python ca Elementos Essenciais do PyGame Event

event o que ? e
Mdulo que cuida dos eventos dentro do PyGame. Voc pode o e utilizar duas tcnicas para trabalhar com eventos: e Usar a la de eventos. Todo evento causado (movimento do mouse, tecla pressionada, ...) geram eventos que vo para a a la de eventos a qual voc pode consultar e tomar as aes e co necessrias. A vantagem que nunca se perde um evento, a a e desvantagem que pode adicionar latncia na resposta e e e tambm precisa-se manter estados para combinar aes (i: e co e duas teclas simultaneamente). Consultar diretamente os dispositivos. A vantagem que e pode vericar vrios estados ao mesmo tempo, porm tem a a e desvantagem de perder eventos (i: o usurio solta o boto do e a a mouse justamente quando voc verica o estado). e
Gustavo Sverzut Barbieri Programao de Jogos em Python ca

Programao de Jogos em Python ca Elementos Essenciais do PyGame Event

event usando la de eventos

from pygame . locals import * for event in pygame . event . get (): if event . type == QUIT : sys . exit () elif event . type == KEYDOWN : print event . key

Gustavo Sverzut Barbieri

Programao de Jogos em Python ca

Programao de Jogos em Python ca Elementos Essenciais do PyGame Event

event consultando os dispositivos

Nesta tcnica voc deve utilizar o mdulo que trata de cada e e o dispositivo e periodicamente chamar a funo pump() do sistema ca de eventos para que seu programa no trave. a
from pygame . locals import * while not ( pygame . mouse . get_pressed ()[ 0 ] or \ pygame . key . get_pressed ()[ K_SPACE ] ): pygame . event . pump ()

Gustavo Sverzut Barbieri

Programao de Jogos em Python ca

Programao de Jogos em Python ca Elementos Essenciais do PyGame Event

event operaes essenciais co


poll() retorna o prximo evento na la. Caso no exista um o a evento, ser criado um do tipo NOEVENT. a post( evento ) coloca um evento na la. pump() caso no utilize a a la de eventos voc deve chamar a e freqentemente esta funo para fazer a manuteno u ca ca do programa, caso contrrio ele pode travar. a get( tipos evento ) retorna todos os eventos de um certo tipo na la. clear() limpa a la de eventos. wait() retorna o prximo evento na la ou espera at que o e um novo evento entre, caso ela estiver vazia.

Gustavo Sverzut Barbieri

Programao de Jogos em Python ca

Programao de Jogos em Python ca Elementos Essenciais do PyGame Font

font o que ? e
Mdulo para trabalhar com fontes True Type. Ele s est o o a habilitado caso voc tenha a biblioteca SDL ttf instalada. e
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 Mundo " , True , a ( 255 , 255 , 0 ) ) tela . blit ( img , ( 0 , 0 ) ) pygame . display . flip ()

Gustavo Sverzut Barbieri

Programao de Jogos em Python ca

Programao de Jogos em Python ca Elementos Essenciais do PyGame Font

font operaes essenciais co


Estas so as operaes do sub-mdulo: a co o get fonts() retorna a lista de fontes dispon veis no sistema. match font( nome ) retorna o caminho para uma fonte que tenha o nome requerido. get default font() retorna o nome do arquivo da fonte padro do a sistema. Font( arquivo, tamanho ) cria uma nova instncia de fonte a a partir de um arquivo. SysFont( nome, tamanho ) cria uma nova instncia de fonte a a partir de uma fonte instalada no sistema.

Gustavo Sverzut Barbieri

Programao de Jogos em Python ca

Programao de Jogos em Python ca Elementos Essenciais do PyGame Font

font.Font operaes essenciais co

Estas so as operaes da classe Font: a co render( texto, antialias, cor frente, cor fundo ) retorna uma superf com o texto desenhado. cie size( texto ) calcula qual ser o tamanho da superf necessria a cie a para desenha o texto. set italic( opcao ) habilita ou desabilita o texto em itlico. a set bold( opcao ) habilita ou desabilita o texto em negrito. set underline( opcao ) habilita ou desabilita sublinhar o texto.

Gustavo Sverzut Barbieri

Programao de Jogos em Python ca

Programao de Jogos em Python ca Elementos Essenciais do PyGame Transform

transform o que ? e
Transform um mdulo para auxiliar modicar superf e o cies, ele tem operaes para rotacionar, espelhar, modicar o tamanho e cortar co superf cies.
img = pygame . image . load ( " minha_imagem . png " ) from pygame . transform import flip , scale , rotate ponta_cabeca = flip ( img , False , True ) inclinada = rotate ( img , 45 ) novo_tam aumentada = img . get_rect (). inflate ( 5 , 5 ) = scale ( img , novo_tam . size )

Gustavo Sverzut Barbieri

Programao de Jogos em Python ca

Programao de Jogos em Python ca Elementos Essenciais do PyGame Transform

transform operaes essenciais co

ip( supercie, x, y ) espelha a imagem horizontal e verticalmente, dependendo se x e y forem verdadeiros ou falsos. rotate( supercie, angulo ) rotaciona a imagem scale( supercie, tamanho ) aumenta ou diminui uma imagem.

Gustavo Sverzut Barbieri

Programao de Jogos em Python ca

Programao de Jogos em Python ca Elementos Essenciais do PyGame Mixer

mixer o que ? e
Mdulo para trabalhar com sons e canais de reproduo. Por o ca padro existem 8 canais para reproduo simultnea. a ca a
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 ()

Gustavo Sverzut Barbieri

Programao de Jogos em Python ca

Programao de Jogos em Python ca Elementos Essenciais do PyGame Mixer

mixer operaes essenciais co

Sound( arquivo ) cria uma nova instncia de objeto de som. a fadeout( tempo ) demora o tempo requerido para deixar todos os canais mudos, o volume vai abaixando gradualmente. pause() pra temporariamente a reproduo de todos os a ca canais. stop() pra a reproduo de todos os canais. a ca unpause() restaura a reproduo dos canais parados. ca

Gustavo Sverzut Barbieri

Programao de Jogos em Python ca

Programao de Jogos em Python ca Elementos Essenciais do PyGame Mixer

mixer.Sound operaes essenciais co


Estas so as operaes essenciais da classe Sound: a co fadeout( tempo ) demora o tempo requerido para deixar o canal que reproduz este som mudo, o volume vai abaixando gradualmente. get length() retorna quantos segundos tem este som. get volume() retorna o valor da altura do som. play( repeticoes ) inicia a reproduo do som. ca set volume( valor ) congura a altura do som, de 0,0 a 1,0. stop() pra a reproduo do som. a ca

Gustavo Sverzut Barbieri

Programao de Jogos em Python ca

Programao de Jogos em Python ca Elementos Essenciais do PyGame Clock

Clock o que ? e
Classe para trabalhar com tempo, atrasar a execuo (e ca consequentemente limitar os quadros por segundo) e tambm e obter tempo entre os quadros.
clock = pygame . time . Clock () FPS = 60 while True : clock . tick ( FPS ) print " Quadros por segundo : " , clock . get_fps ()

A operao mais usada tick( atraso ) que serve para manter ca e uma taxa de quadros por segundo.

Gustavo Sverzut Barbieri

Programao de Jogos em Python ca

Programao de Jogos em Python ca Sprite e Grupos

sprite O que ? e

Sprite uma imagem bi-dimensional que faz parte de uma cena e maior, isto , os componentes que aparecem no jogo. e O PyGame traz um mdulo com vrios utilitrios para trabalhar o a a com Sprites e tornar o desenvolvimento muito mais fcil. As a classes bsicas so: a a Sprite deve ser herdada pelos componentes do seu jogo. Group serve para agrupar Sprites, existem especializaes co desta classe para ajudar com tarefas rotineiras.

Gustavo Sverzut Barbieri

Programao de Jogos em Python ca

Programao de Jogos em Python ca Sprite e Grupos Sprite

sprite.Sprite o que ? e

Sprite a classe bsica que deve ser especializada pelos e a

componentes do seu jogo. Ela implementa mtodos necessrios e a pelas classes de grupo e mantm a lista de grupos a qual pertence. e oe a Um Sprite s considerado vivo se est dentro de um grupo.

Gustavo Sverzut Barbieri

Programao de Jogos em Python ca

Programao de Jogos em Python ca Sprite e Grupos Sprite

sprite.Sprite operaes essenciais co


add( lista grupos ) adiciona o Sprite ` lista de grupos a alive() retorna verdadeiro se est vivo, isto , dentro de a e algum grupo groups() retorna a lista de grupos em que este Sprite est. a kill() remove o Sprite de todos os grupos remove( lista grupos ) remove o Sprite da lista de grupos. update() funo que no faz nada, deve ser modicada pelas ca a classes especializadas para atualizar o sprite (movimentar, modicar a imagem, ...).

Gustavo Sverzut Barbieri

Programao de Jogos em Python ca

Programao de Jogos em Python ca Sprite e Grupos Group

sprite.Group o que ? e
Group a classe bsica que contm sprites, existem vrias e a e a

especializaes: co GroupSingle mantm apenas o ultimo sprite adicionado. e RenderUpdates implementa o mtodo draw( superficie ) que e desenha todos os sprites do grupo na superf e cie retorna a lista de reas modicadas, ento podemos a a utilizar a tcnica de Dirty Rectangles apenas fazendo: e pygame.display.update( meugrupo.draw( tela ) ). OrderedUpdates especializao de RenderUpdates, mas faz as ca atualizaes na ordem em que os sprites foram co adicionados.

Gustavo Sverzut Barbieri

Programao de Jogos em Python ca

Programao de Jogos em Python ca Sprite e Grupos Group

sprite.Group operaes essenciais co


add( lista sprites ) adiciona a lista de Sprites ao grupo. clear( superce, fundo ) limpa a superf cie, para isto copia os pedaos que foram sujos anteriormente do fundo. c empty() remove todos os Sprites do grupo. has( sprite ) verica se o Sprite est no grupo. a remove( lista sprites ) remove a lista de Sprites do grupo. sprites() retorna os Sprites contidos neste grupo. update( *args ) chama update( *args ) em todos os Sprites do grupo.

Gustavo Sverzut Barbieri

Programao de Jogos em Python ca

Programao de Jogos em Python ca Sprite e Grupos Group

Exemplo: Movimentando uma Bola

#! / u s r / b i n / e n v p y t h o n from copy import copy import pygame from pygame . locals import * from pygame . sprite import Sprite , RenderUpdates

Gustavo Sverzut Barbieri

Programao de Jogos em Python ca

Programao de Jogos em Python ca Sprite e Grupos Group

class Bola ( Sprite ): def __init__ ( self , pos , * grupos ): Sprite . __init__ ( self , * grupos ) self . rect = Rect ( 0 , 0 , 100 , 100 ) self . rect . center = pos # C r i a imagem r = self . rect self . image = pygame . Surface ( r . size ) self . image . set_colorkey ( ( 0 , 0 , 0 ) ) self . image . fill ( ( 0 , 0 , 0 ) ) pygame . draw . circle ( self . image , ( 255 , 255 , 255 ) , ( r . width / 2 , r . height / 2 ) , r . width / 2 ) # init () def move ( self , x , y ): self . rect . move_ip ( x , y ) # move ( )
Gustavo Sverzut Barbieri Programao de Jogos em Python ca

Programao de Jogos em Python ca Sprite e Grupos Group

# Configuraes i n i c i a i s co pygame . init () tela = pygame . display . set_mode ( ( 640 , 480 ) ) grupo = RenderUpdates () bola = Bola ( ( 0 , 0 ) , grupo ) clock = pygame . time . Clock () fundo = pygame . Surface ( tela . get_size () ) fundo . fill ( ( 0 , 0 , 255 ) ) tela . blit ( fundo , ( 0 , 0 ) ) pygame . display . flip () key = { K_UP : False , K_DOWN : False , K_LEFT : False , K_RIGHT : False }

Gustavo Sverzut Barbieri

Programao de Jogos em Python ca

Programao de Jogos em Python ca Sprite e Grupos Group

# La o p r i n c i p a l c while True : clock . tick ( 24 ) # Trata e v e n t o s for e in pygame . event . get ( [ KEYUP , KEYDOWN ] ): valor = ( e . type == KEYDOWN ) if e . key == K_ESCAPE : raise SystemExit , " Fim . " elif e . key in key . keys (): key [ e . key ] = valor # Movimenta a b o l a de a c o r d o com a s t e c l a s if key [ K_UP ]: bola . move ( 0 , -10 ) if key [ K_DOWN ]: bola . move ( 0 , 10 ) if key [ K_LEFT ]: bola . move ( -10 , 0 ) if key [ K_RIGHT ]: bola . move ( 10 , 0 ) grupo . clear ( tela , fundo ) pygame . display . update ( grupo . draw ( tela ) )
Gustavo Sverzut Barbieri Programao de Jogos em Python ca

Programao de Jogos em Python ca Sprite e Grupos Group

Detectando colises o
Um dos recursos mais utilizados no desenvolvimento de jogos e detectar colises e o PyGame torna esta tarefa fcil com as o a funes: co spritecollide( sprite, grupo, mate ) detecta a coliso do Sprite com a os elementos do grupo. Caso mate for verdadeira executa o mtodo kill() dos sprites que colidiram. e Esta funo retorna uma lista com os elementos ca afetados. groupcollide( grupo1, grupo2, mate1, mate2 ) detecta a coliso a dos Sprites do grupo1 contra os do grupo2 e executa o mtodo kill() nos elementos baseado nos valores e dos parmetros mate1 e mate2. Esta funo retorna a ca um dicionrio no qual as chaves so elementos do a a grupo1 e os valores so listas de elementos do grupo2 a com os quais eles colidiram.
Gustavo Sverzut Barbieri Programao de Jogos em Python ca

Programao de Jogos em Python ca Referncias e Materiais de Apoio e Tutorial e Exemplos

Tutorial e Exemplos

Em http://www.gustavobarbieri.com.br/jogos/ existem alguns cdigos de jogos simples porm funcionais que o e podem ser utilizados como base de novos projetos. O tutorial passo a passo de como planejar e construir um jogo pode ser encontrado em: http://www.gustavobarbieri.com.br/jogos/jogo/doc/. Ele aborda como separar os elementos do jogo e com isso conseguir uma plataforma fcil de manter e extender. a

Gustavo Sverzut Barbieri

Programao de Jogos em Python ca

Programao de Jogos em Python ca Referncias e Materiais de Apoio e Referncias e

Referncias e
Python: http://www.python.org/ PyGame: http://www.pygame.org/ A Newbie Guide to pygame: http://www.pygame.org/docs/tut/newbieguide.html Introduo ao Pygame: ca http://www.pygame.org/docs/tut/intro/intro.html Dicas de Performance para Python: http: //www.python.org/moin/PythonSpeed/PerformanceTips Introduo ao Mdulo Sprite do PyGame: ca o http://www.pygame.org/docs/tut/SpriteIntro.html

Gustavo Sverzut Barbieri

Programao de Jogos em Python ca

Programao de Jogos em Python ca Referncias e Materiais de Apoio e Contato

Contato

Gustavo Sverzut Barbieri


Email: Website: ICQ: MSN: Jabber: barbieri@gmail.com http://www.gustavobarbieri.com.br 17249123 barbieri@gmail.com gsbarbieri@jabber.org

Obtenha esta palestra em: http://palestras.gustavobarbieri.com.br/pygame/


Gustavo Sverzut Barbieri Programao de Jogos em Python ca

S-ar putea să vă placă și