Escolar Documentos
Profissional Documentos
Cultura Documentos
GPSL - UNICAMP
28 de abril de 2005
Gustavo Sverzut Barbieri (GPSL - UNICAMP) Programação de Jogos em Python 28 de abril de 2005 1 / 14
Esta apresentação é uma explicação mais detalhada sobre o código que
pode ser encontrado em:
http://www.gustavobarbieri.com.br/labirinto_grafico.py
Gustavo Sverzut Barbieri (GPSL - UNICAMP) Programação de Jogos em Python 28 de abril de 2005 2 / 14
Importando módulos necessários
import pygame
from pygame . locals import *
from pygame . sprite import Sprite , RenderUpdates
Gustavo Sverzut Barbieri (GPSL - UNICAMP) Programação de Jogos em Python 28 de abril de 2005 3 / 14
Função para desenhar retângulos
r = Rect ( ( 0 , 0 ) , tamanho )
r . inflate_ip ( -2 , -2 )
r . topleft = ( 1 , 1 )
return img
# desenha quadrado ( )
Gustavo Sverzut Barbieri (GPSL - UNICAMP) Programação de Jogos em Python 28 de abril de 2005 4 / 14
Objeto do jogo “Quadrado”
1
Apesar de usarmos self.grupos, isso foi feito devido ao método de resolução de
atributos do Python, primeiro procura-se na instância, depois nas classes que compõe a
instância.
Gustavo Sverzut Barbieri (GPSL - UNICAMP) Programação de Jogos em Python 28 de abril de 2005 5 / 14
Objetos do jogo “Parede”, “Vazio”, ...
Gustavo Sverzut Barbieri (GPSL - UNICAMP) Programação de Jogos em Python 28 de abril de 2005 6 / 14
Lendo imagens para o labirinto
Usa - se variavel de classe para evitar que cada objeto tenha uma copia
da mesma imagem , economizando memoria .
"""
t = self . tam_peca
if t is None :
raise Exception ( " Voc^
e deve usar _ _ a r r u m a _ p o s i c o e s () primeiro ! " )
Quadrado . tamanho = t
# Lê imagens :
Parede . image = desenha_quadrado ( t , Color ( " gray35 " ) )
Caminho . image = desenha_quadrado ( t , Color ( " wheat " ) )
Entrada . image = desenha_quadrado ( t , Color ( " magenta " ) )
Saida . image = desenha_quadrado ( t , Color ( " green " ) )
CaminhoCerto . image = desenha_quadrado ( t , Color ( " cyan " ) )
CaminhoErrado . image = desenha_quadrado ( t , Color ( " red " ) )
C am in h o P e r c o r r i d o . image = d e s e n h a _ q u a d r a d o ( t , Color ( " yellow " ) )
Vazio . image = pygame . Surface ( t )
Vazio . image . set_colorkey ( Color ( " black " ) )
Vazio . image . fill ( Color ( " black " ) )
# le imagens ()
Gustavo Sverzut Barbieri (GPSL - UNICAMP) Programação de Jogos em Python 28 de abril de 2005 7 / 14
Lendo imagens para o labirinto
Usamos variáveis de classe para evitar que cada instância carrege uma
cópia, economizando memória
Se precisarmos mudar de todas as instâncias, é só mudar esta variável
de classe.
Se quisermos que uma certa instância tenha uma imagem diferente, é
só atribuir à instância e este valor se sobrepõe ao da classe na
resolução dos atributos. (Maior Flexibilidade)
Gustavo Sverzut Barbieri (GPSL - UNICAMP) Programação de Jogos em Python 28 de abril de 2005 8 / 14
Desenhando o Labirinto
Gustavo Sverzut Barbieri (GPSL - UNICAMP) Programação de Jogos em Python 28 de abril de 2005 9 / 14
O Jogo
Gustavo Sverzut Barbieri (GPSL - UNICAMP) Programação de Jogos em Python 28 de abril de 2005 10 / 14
O Jogo: Parando e Atualizando a tela
Gustavo Sverzut Barbieri (GPSL - UNICAMP) Programação de Jogos em Python 28 de abril de 2005 11 / 14
Tratando Eventos
Gustavo Sverzut Barbieri (GPSL - UNICAMP) Programação de Jogos em Python 28 de abril de 2005 12 / 14
O Jogo: Laço Principal
Gustavo Sverzut Barbieri (GPSL - UNICAMP) Programação de Jogos em Python 28 de abril de 2005 13 / 14
E assim se faz um jogo...
Dúvidas???
Gustavo Sverzut Barbieri (GPSL - UNICAMP) Programação de Jogos em Python 28 de abril de 2005 14 / 14
Contato
Gustavo Sverzut Barbieri (GPSL - UNICAMP) Programação de Jogos em Python 28 de abril de 2005 15 / 14