Versão para impressão - Introdução ao PyGame
Por: Rodrigo Vieira[Entre em contato com o autor ] MCSD e MCAD, formado em Ciência da Computacão, trabalhando há 5 anos em uma empresa de telecomunicacões em Oslo, Noruega, desenvolvendo aplicativos para Intranet nas plataformas .Net e Oracle. Entusiasta de Python, Mono, Linux e software livre em geral.
http://br.thespoke.net/MyBlog/rodviking/MyBlog.aspx Feed de artigos.
Gere seu feed personalizado Assunto
PyGame (http://www.pygame.org) é uma biblioteca para Python que estende o SDL (biblioteca multimídia multiplataforma, escrita em C) com uma série de módulos para criação de jogos. Nesse artigo vamos criar um jogo bem simples com PyGame, levemente baseado no clássico "Arkanoid", ou seja, um objeto que quica pela tela e que devemos rebater com uma plataforma. Quando pronto, o jogo deverá parecer assim:
1) Elementos básicos Como você pode ver acima, o nosso jogo terá 3 elementos principais: o "bouncer", que é a plataforma vermelha no fundo da tela, que rebate a "bola" (bem, o hambúrguer, por falta de imagem melhor!). O terceiro elemento é a tela do jogo em si, onde a ação ocorre.
Nossa primeira classe é muito simples, herdada da classe Sprite nativa do PyGame. Um sprite é um elemento gráfico do jogo, e possui 2 propriedades importantes: image e rect. Image é a imagem em si, carregada do disco (os principais formatos são suportados, tais como JPG, GIF, PNG e BMP) e rect representa o retângulo virtual que contém a imagem (imagine um retângulo circunscrito à imagem). Alterando as propriedades centerx, centery, top, bottom, left e right de rect podemos posicionar o sprite onde quisermos na tela. O método update é executado a cada loop do nosso jogo para mover o sprite para esquerda ou para direita, através da função move_ip, que aceita 2 parâmetros, x e y, indicando quantos pixels queremos mover o objeto no eixo x (horizontal) e y (vertical). Vale lembrar que no nosso caso a origem do eixo está no canto superior esquerdo da tela, logo, ao executarmos move_ip(1,2) estaremos movendo o sprite 1 pixel para a direita e 2 pixes para baixo.
elif self.rect.right > width:
if self.rect.left < 0 or self.rect.right > width:
A última parte do nosso programa desenhará todos os objetos na tela a cada loop do jogo, de acordo com suas posições atuais (atualizadas através do método update() de cada um). Após calculadas as novas posições, a forma mais eficiente de atualizarmos a tela é preenchê-la com o fundo preto, para que os objetos antigos (da iteração anterior) sejam apagados: isso é muito mais simples do que ter que apagá-los um a um. O método blit renderiza cada objeto na tela, e quando todos estiverem prontos o método flip irá efetivamente atualizar a tela para o jogador.