10. 03.

10 Things a Beginner Should Know About Pygame (english version)

  1. Before you start, learn Python. For those who already code in another language, I give you my word: It’s a freaking easy task. Satisfaction guaranteed or your money back.
  2. Display is where action happens. The pygame.display module controls the game window. set_mode() defines window size and the get_surface() returns a reference to the Surface (see next topic) that represents the game window. A very important concept to keep in mind when using Pygame is that changes made to display aren’t immediately seen on screen. To do that, you need to update screen by calling flip() or update(). The difference between these two methods is that the former updates the whole screen and the latter updates only the screen areas passed as parameters.
  3. Surface vs. Rect.Objects from the Surface class represent fixed size images (width x height). blit() draws a Surface (image) inside another and is the main method of the Surface class. Rect class defines objects that represent and handle rectangular coordinates on the screen. If you need to set a relationship between these two classes, remember the Surface.get_rect() method. It returns an object from Rect class representing the coordinates of a given image.
  4. Is Sprite a thing you can drink? The pygame.sprite module has classes and functions that controls game dynamics. Sprite is the base class used to represent visible objects in our games. These objects are grouped in objects from the Group and its descendants (RenderUpdates, OrderedUpdates a GroupSingle). So, before doing geometric tricks when in need to check if an object touches another, don’t forget: the spritecollide() method is your friend.
  5. Understand the event loop. In order to work well, a Pygame application needs to keep itself observing the several events that occur during execution, like pressed keys, mouse clicks and others. Thus, we need to implement and infinite loop, breaking it only when the application is explicitly finished.
  6. Mute cinema? As in any movie, a good game needs to have sounds. In this case, pygame.mixer is the module in charge. The Sound class objects load and play sounds from OGG or WAV (uncompressed) files. Once the object is created, play() methods plays the sound.
  7. And what about text? To show text characters on screen we can count with the help of the pygame.font module. Text is rendered as a new object of the Surface class. Font class loads a TrueType font from a file, while its sister SysFont does it simply passing the name of one of the fonts currently available on OS. Once the object with a loaded font is created, you just need to call render() passing the string containing the text to get a Surface with the rendered text.
  8. Try to write object oriented code. Pygame is easy, but code for any game with a minimum of complexity may easily become large and difficult to mantain. Identify the game elements that have attributes in common and use the concept of inheritance.
  9. Read the Line By Line Chimp tutorial. Before you start, make sure to keep some time to follow the chimp tutorial rigorously. It’s a very short text and shows most basic concepts and just the ones that really matter. In fact, I think I should put this tip on top of the list :)
  10. Study the source code of a complete game. This particular example has an incremental approach, in which you can notice the changes in game according to the need to add new elements to evolve the game.

Leia também


5. 04.

Durante as férias, na falta de algo mais interessante para empregar o tempo livre, resolvi finalmente matar minha curiosidade sobre o Pygame . De fato, trata-se de um dos mais fantásticos módulos Python existentes, pois torna simples a atividade de desenvolver jogos, mesmo para quem não tem experiência no ramo. O entusiasmo foi tamanho que achei justo compartilhar com outros iniciantes um pouco do que aprendi. A idéia não é mostrar um tutorial completo, mas sim encurtar os caminhos na pesquisa da (ótima) documentação da API. Então, espero que sejam úteis as…

10 Coisas Que Um Iniciante Deve Saber Sobre o Pygame

  1. Antes de começar, aprenda Python . Para quem já programa em alguma outra linguagem, posso garantir que a tarefa é assustadoramente fácil. Satisfação garantida ou seu dinheiro de volta.
  2. O display é onde a ação acontece. O módulo pygame.display é quem controla a janela onde o jogo se desenrola. O tamanho da tela é definido por set_mode() e o método get_surface() retorna uma referência para a Surface (ver próximo tópico) que representa a tela de jogo. Um dos conceitos mais importantes para se ter em mente no Pygame é que as mudanças feitas no display não são refletidas imediatamente na tela. Para isso, é preciso atualizá-la por meio dos métodos flip() ou update() . A diferença entre os dois é que o primeiro atualiza toda a tela, enquanto que o segundo atualiza apenas as áreas da tela passadas como parâmetro.
  3. Surface vs. Rect . Quem nunca confundiu os dois que atire o primeiro pixel. A função dos objetos da classe Surface é representar imagens de tamanho fixo (largura x altura) e seu principal método é o blit() , que serve para desenhar uma Surface (imagem) dentro de outra. Já a classe Rect define objetos que representam e manipulam coordenadas retangulares na tela. Quando for preciso estabelecer algum tipo de relação entre essas duas classes, é importante lembrar do método Surface.get_rect() , que retorna um objeto da classe Rect representando as coordenadas de uma determinada imagem.
  4. Sprite é uma marca de refrigerante? Nesse caso, imagem é tudo. O módulo pygame.sprite possui classes e funções que servem para controlar a dinâmica do jogo. Sprite é a classe base para representar os objetos visíveis dos nossos jogos, que por sua vez estão agrupados em objetos da classe Group e seus descendentes (RenderUpdates , OrderedUpdates e GroupSingle ). Sendo assim, antes de fazer malabarismos geométricos quando precisar verificar se algum objeto "encosta" em outro, não esqueça que o método spritecollide() é seu amigo.
  5. Entenda o loop de eventos . Para ser funcional, uma aplicação feita em Pygame precisa estar constantemente "escutando" os diversos eventos que nela ocorrem, sejam eles teclas pressionadas ou cliques de mouse, entre outros. Para isso, é necessário que implementemos um laço (loop) infinito, que só é interrompido quando encerramos a aplicação explicitamente.
  6. Cinema mudo? Assim como em qualquer filme, um jogo que se preze precisa ter som. O módulo pygame.mixer é quem cuida deste departamento. Os objetos da classe Sound têm a função de carregar e tocar sons a partir de arquivos dos tipos OGG ou WAV (uncompressed) . Uma vez instanciado o objeto, o método play() executa o som.
  7. E os textos? Para exibir caracteres de texto na tela contamos com o auxílio do módulo pygame.font . O texto é renderizado como um novo objeto da classe Surface. A classe Font tem a função de carregar uma fonte TrueType a partir de um arquivo, enquanto sua irmã SysFont o faz simplesmente passando como argumento do construtor o nome de uma das fontes instaladas no sistema operacional. Uma vez criado o objeto com a fonte carregada, basta chamar o método render() passando uma string com o texto desejado para receber uma Surface já com o texto desenhado.
  8. Tente programar usando orientação a objetos . O Pygame é fácil, mas qualquer jogo com um mínimo de complexidade pode rapidamente se tornar extenso e difícil de manter. Perceba que vários dos elementos do seu jogo acabam possuindo características em comum e abuse do conceito de herança.
  9. Leia o tutorial Line By Line Chimp . Antes de começar, certifique-se de reservar tempo para seguir rigorosamente o tutorial. Por ser bastante resumido, ilustra a maioria dos conceitos básicos sem desviar o foco do que realmente importa. Pensando bem, talvez fosse melhor colocar esta dica em primeiro lugar :)
  10. Estude o código-fonte de um jogo completo . Este exemplo em particular é indicado devido à sua abordagem incremental, onde é possível perceber como ocorrem as modificações no código de acordo com a necessidade de acrescentar novos elementos e evoluir o jogo.

Leia também



Sobre o autor

Rodrigo Amaral Rodrigo Amaral
Desenvolvedor de Software, Brasil
View Rodrigo Amaral's profile on LinkedIn

PyConBrasil 2008

PyConBrasil 2008

Assine os feeds RSS

Categorias

Links

Meta