Desenvolvimento de Jogos Utilizando a Biblioteca Pygame

Propaganda
Desenvolvimento de Jogos Utilizando a Biblioteca
Pygame
Amaro C. M. Alexandre, Sérgio F. F. Filho, Marcílio S. Valois, Erick B. B. Silva,
Brendo C. Bonfim, Paulyne Jucá
[email protected], [email protected], [email protected],
[email protected]
Abstract. This article presents the Pygame Library, its components, techniques
and ways to the game development, using the Python programming language.
Also, it gives tips that will help developers to reduce the programming
difficulties, decreasing or even avoiding the rework.
Resumo. Este artigo visa apresentar a biblioteca Pygame junto com seus
componentes aprofundando técnicas e passos para o desenvolvimento de jogos
utilizando a linguagem Python. Além disso, serão citados atalhos que reduzirão
as dificuldades na programação diminuindo ou até mesmo evitando retrabalho.
1. Introdução
Desde criança somos expostos a diversos tipos de entretenimento, cada um com
diferentes maneiras de interagir. Um famoso tipo de entretenimento são os jogos
eletrônicos, que tem como conceito transformar objetos do mundo real em cenários
interativos, simulados através de dispositivos, sejam computadores, consoles ou
dispositivos móveis, gerando resultados emocionais para os usuários. Com essa proposta
os jogos eletrônicos ganharam um grande público de várias faixas etárias e diversos
perfis socioeconômicos que vem aumentando a cada geração.
Devido ao crescimento no número de usuários e adeptos aos jogos, existe uma
necessidade maior da criação de novos jogos, proporcionando assim, mais oportunidades
para desenvolvedores, tanto em empresas como desenvolvedores independentes, se
tornando um ciclo evolutivo e inovador que atinge diretamente a economia mundial.
Pesquisas apontam que em 2011 as vendas de consoles, jogos e serviços de jogos online
ultrapassaram os US$ 60,4 bilhões anuais e tende a aumentar 25% até o ano de 20151.
Esse artigo apresenta a Pygame, uma biblioteca de desenvolvimento de jogos na
linguagem Python2, utilizada na Oficina de Jogos, um grupo de estudos e práticas em
desenvolvimento de jogos da UFC- Quixadá.
2. Pygame
Python é uma linguagem dinâmica multiplataforma de código aberto. Possui a sintaxe
simples e clara, e de tipos de dados dinâmicos. Além disso, a linguagem possui seu
código fonte aberto e pode ser utilizada livremente até mesmo para uso comercial. Ela
pode ser usada para a criação de jogos eletrônicos, aplicações desktop, servidores webs e
etc. Atualmente está na versão 3.
A linguagem de programação Python fornece uma base para o desenvolvimento
de aplicações em geral, porém existe uma escassez quando se diz respeito ao suporte de
1
http://www.tecmundo.com.br/infografico/9708-o-tamanho-da-industria-dosvideo-games-infografico-.htm
2
http://www.python.org/
algumas necessidades específicas dos jogos, por exemplo, tratamento de colisões,
tratamento de eventos, animação e sons. Para suprir essas necessidades existe a engine
Pygame, uma biblioteca que concede suporte ao desenvolvimento de jogos.
O termo “Game Engine” foi criado na década de 90, especialmente utilizado em
jogos 3D, geralmente em jogos em tiro de primeira pessoa (FPS). Game Engine é um
termo utilizado para designar um conjunto de bibliotecas (ferramentas) que podem ser
utilizada para criação de jogos, normalmente são mais utilizadas visando a interface
gráfica dos jogos, mas podem também ser utilizadas em diversos outros aspectos como
por exemplo a física. Um dos primeiros jogos a utilizar Game Engine foi Doom, que
rapidamente se tornou popular assim como também pode ser citado o Quake, jogos de
tiro em primeira pessoa 3D.
A biblioteca nos permite criar telas e definir algumas características de interface
para a mesma, como por exemplo, estabelecer seu tamanho e nome. Ela possui também
métodos de desenhos de polígonos, como retângulos, círculos, elipses ou qualquer forma
geométrica. Uma de suas principais características é a permissão para carregar imagens
facilitando assim o uso de animação do jogo, já que uma animação nada mais é do que
imagens sendo carregadas e atualizadas em um tempo contínuo. Como também permite o
carregamento de sons em formato wav e ogg e manipula-los, como por exemplo, executar,
pausar, resumir, retroceder e definir o volume.
3. Passos para o Desenvolvimento de Jogos
Inicialmente no ciclo do desenvolvimento de um jogo é necessário a criação do game
design, um documento que define todos os eventos possíveis do jogo, personagens,
premiações, história com inicio, meio e fim, entre outros. Sem este documento,
desenvolver o jogo pode se tornar uma tarefa árdua, pois qualquer alteração no
desenvolvimento, seja adicionar, remover ou editar elementos, equivale refazê-lo desde o
inicio.
Produzir jogos requer testes e ajustes constantes, seja no código, ou na parte
visual. Por isso é importante separar a parte lógica da parte visual. Isso evita que
alterações na lógica influenciem a animação e vice-versa, e assim seja necessário ter
retrabalho constantemente. Para isso se pode usar a orientação a objetos que um dos
paradigmas de programação atuais suportados pelo Python para encapsular as
informações e evitar acoplamentos desnecessários.
A pygame é formada por um conjunto de classes, como a Sprite, Rect e a Mixer.
A Mixer é classe responsável pela manipulação de efeitos sonoros. Essa característica é
muito importante, pois grande parte dos jogos tem efeitos sonoros. Esses feitos sonoros
geralmente são no formato WAV, mas também podem ser OCG ou MP3.
A codificação de um jogo com Python e Pygame começa com a criação da tela de
jogo, para isso a biblioteca oferece um método onde este, cria uma janela com as
dimensões fornecidas pelo programador como parâmetro. Também é oferecida uma
infinidade de métodos que trabalham com a tela de jogo já criada que vão desde a
personalização da janela até a alternância para o modo tela cheia.
Para construir e definir as dimensões da tela em Pygame, use:
janela = pygame.display.set_mode(largura, altura)
Com a janela criada você pode, por exemplo, carregar uma imagem para
representar um personagem, objetos ou até mesmo um background, para isso se utiliza
um método que carrega um arquivo de imagem. A imagem deve ser passada como
parâmetro juntamente com seu endereço do arquivo.
Para definir o background em Pygame, use:
fundo = pygame.image.load(“background.png”)
Para mostrar a imagem que foi carregada na tela usa-se um método, que a atualiza na tela,
passando a variável onde a imagem foi carregada e a posição que a imagem deve ser
mostrada na tela. Essa posição na tela pode ser definida por coordenadas em um plano
cartesiano (tela de jogo) onde cada pixel representa uma unidade do plano.
Para imprimir a imagem na tela em Pygame, use:
janela.blit(fundo(fundox,fundoy)
É necessário adicionar valores as variáveis que guardam a posição da imagem. Usando
essa função dentro de um loop teremos a ilusão de movimento. Para criar uma animação
é necessária uma sequência de imagens, e para cada imagem dessa sequência, usar a
função blit.
Para utilizarmos um efeito sonoro é necessário carregar esse arquivo no código.
musica = pygame.mixer.Sound(“MinhaMusica.wav”)
Assim, carregamos o som desejado na variável “musica”. Além de carregar,
podemos manipular como se fosse um reprodutor de música. Para executar:
musica.play()
Para-la:
musica.stop()
E pause:
musica.pause()
Existem diversos comandos que complementam os anteriores, como o de mudar
volume e o de continuar a partir de onde pausou o som.
Essa função em Pygame é:
musica.unpause()
Os eventos em Pygame podem ser o ato de apertar botões do teclado como a ação
de soltá-los também, cliques do mouse, ações com botões de joystick, ou eventos criados
pelo desenvolvedor. O processamento desses eventos em Pygame é baseado em uma lista
de eventos, onde é possível realizar ações como, obter um determinado evento, bloqueálo, liberá-lo, esperar que um evento aconteça ou simplesmente limpar a lista de eventos.
É possível utilizar a lista de eventos para configurar os controles, basta verificar se
as teclas, mouse ou botões do joystick que correspondem a controles no seu jogo foram
ativados na lista de eventos e a partir dessa informação tratar os comandos do jogador.
Para fazer isso em Pygame, as funções e comandos a seguir servem como
exemplo básico.
for event in pygame.event.get():
if(event.key == K_LEFT):
direita()
elif(event.key == K_RIGHT):
esquerda()
Após a construção da tela, manipulação de imagens, sons e movimentos, devemos
atualizar a tela toda a cada interação do loop principal, com a finalidade de tudo que
alterar seu lugar na lógica do jogo, deve alterar também na tela que o jogador vê. Perceba
que o método blit é referente somente á atualização de uma imagem especifica, e o
método descrito abaixo é relacionado a todos os elementos da tela.
pygame.display.update()
4. Conclusão
O desenvolvimento de jogos envolve bastante esforço e recursos, principalmente tempo.
Por isso, é preciso decidir ferramentas e linguagens previamente para que não seja
necessário abandonar ou refazer o jogo. Apesar de suas limitações, Python e Pygame
fornecem o suporte básico para o desenvolvimento de jogos, além de ser possível usá-las
junto a outras ferramentas e linguagens.
Referências
SWEIGART, ALBERT. Making Games With Python & Pygame.
SWEIGART, ALBERT. Invent Your Own Computer Games with Python.
http://www.pygame.org/docs
http://www.python.org
Download