04 março 2013

Pygame… start!

Para quem se interessou pelo pygame eu vou tentar trazer alguma luz sobre o caso e como utilizar os
recursos à medida que eu mesmo consiga absorver o conteúdo.

A princípio é necessário instalar a biblioteca do pygame. Acesse esse link e escolha o que se encaixa com o seu S.O. e versão do python. Para começar vamos olhar o exemplo abaixo:



O import pygame importa o pacote com todos os módulos do pygame instalados e a chamada "pygame.init()" inicializa cada um desses módulos. Isso deve ser feito sempre, claro. Provavelmente você encontrará um pacote sendo inicializado junto, o sys.


A inicialização do módulo sys vai servir primeiramente para quando for executado o comando quit, mais a frente ficará mais claro.

Agora vamos para uma janela:


A primeira linha serve para ser colocado o tamanho da janela, height - altura, width - largura. O que aparece na última linha display.set_mode() é uma função que irá pegar os valores informados em size. Esses valores podem ser indicados diretamente na função como no exemplo abaixo:


Sendo exatamente com dois parênteses como mostrado e só com um quando se usa a variável size. Estou incerto de chamar size de variável ou de atributo, mas como o nome size não se encontra dentro de uma class vou considerar uma variável até segunda ordem.

Usando um pouco de dedução o speed serve para definir a velocidade de movimentação dentro das coordenadas x e y. Nesse caso ele, o objeto escolhido sofrerá uma mudança total de um movimento em diagonal pra em linha reta se simplesmente trocarmos um dos números - 2 para 0 por exemplo.

Na linha que encontramos black temos três valores que são o Red, Green, Blue. Essa variável será utilizada mais adiante.

Agora vemos uma parte interessante que lê uma imagem que deverá inicialmente estar dentro da mesma pasta onde será salvo o arquivo .py. Se salvar com outro nome basta trocar o ball.bmp por ele.


O image.load() é a função que carregará a imagem e o get_rect() é onde terá a coordenada do retângulo. Nesse caso imagino que o padrão está sendo determinado ao não ser informado nada.

Agora na parte final desse código temos um loop while. Nessa parte do while vamos encontrar a função quit que mencionei anteriormente. É ai, nesse primeiro if, que se a janela for fechada o programa será terminado. Acredito que isso se refira a limpar da memória tudo que foi carregado para gerar a janela. Vou confirmar isso posteriormente.


Após o ballrect podemos ver como foi feito para que a imagem ao tocar nas laterais venha a ter um movimento oposto ao inicial.

Mais abaixo encontramos o .fill que serve para determinar a cor de fundo da tela, é onde utilizamos o black determinado no inicio. As outras funções eu ainda não compreendi com clareza, por isso vou deixar pra depois.

Esse código é o mesmo que se encontra na wiki do pygame. Basta clicar nesse link para acessar a página, mas o código completo pode ser visto clicando no 'continue lendo', abaixo. Se não estiver vendo o continue lendo provavelmente você já vai estar vendo o código completo. Ao testar você verá uma bola ou imagem se movimentar dentro da janela sempre que o mouse se mover. Ainda estou atrás de descobrir o por que da dependência do mouse. O que ou qual função faz isso nesse código. Qualquer dúvida adicione uma resposta abaixo. Ou se souber algo sobre isso que mencionei agora ficarei grato em saber.