Introdução
Próximos passos
Neste ponto do curso já aprendemos as principais estruturas e comandos do Python: funções, input
, print
, if
, while
, for
, listas, dicionários, strings. Além disso, já somos capazes de desenvolver algoritmos que resolvem diversos problemas computacionais (ainda tem muito mais pela frente, mas já é um ótimo começo!).
Nas próximas semanas vamos partir para um desafio um pouco maior: desenvolver um jogo 2D utilizando a biblioteca1 Pygame, que disponibiliza diversas funções que permitem:
- Manipular e desenhar imagens em uma janela;
- Interagir com o usuário por meio do teclado, mouse ou outros dispositivos (ex: controles);
- Tocar sons.
Objetivos de aprendizagem#
Ao final deste handout, você deverá ser capaz de:
- Criar janelas utilizando Pygame;
- Desenhar formas geométricas simples usando Pygame.
Estrutura básica de um jogo#
Vamos começar entendendo a estrutura de um jogo qualquer. Note que este conhecimento independe da biblioteca ou linguagem de programação utilizada. Essa estrutura pode ser resumida da seguinte maneira:
Inicialização#
- Importa e inicia pacotes: por exemplo, realiza os
imports
no Python; - Inicia estruturas de dados: por exemplo, inicia listas, dicionários, variáveis, etc. com seus valores padrão;
- Inicia assets: exemplos de assets são imagens, sons, sprites, modelos 3D, etc. que são utilizados pelo jogo;
- Gera tela principal: criar a janela onde o jogo será apresentado;
- Dispara loop principal: depois que toda a inicialização está concluída o jogo propriamente dito se inicia.
Loop principal#
O jogo e toda a interação acontece durante esta fase. O loop principal, também chamado de game loop, se repete enquanto o jogo estiver rodando. Em geral, ao final de uma iteração do loop principal será gerado um novo frame para ser apresentado para o usuário.
- Trata eventos: por exemplo, movimentos/cliques de mouse, input de teclado, timer, clique do usuário no X para fechar a janela, etc.
- Verifica consequências: verifica se houve colisões, aplica as ações do usuário (por exemplo, muda a direção do personagem se o jogador apertou uma tecla), etc. de acordo com as regras e mecânica do jogo;
- Atualiza estado do jogo: move os objetos na tela, atualiza os estados dos assets (por exemplo, muda a animação) e as estruturas de dados utilizadas (por exemplo, atualiza a lista de personagens vivos);
- Gera saídas: exibe as mudanças para o jogador (gera uma nova imagem/frame, toca um som, etc.).
Finalização#
Na finalização pode ser realizado o fechamento de arquivos, salvar o placar do jogo, fechar a janela do jogo, etc.
Checks de estudo#
Após a conclusão de cada handout, haverá alguma atividade extra para você treinar o que acabou de aprender. Ao final de todas as atividades você terá desenvolvido um jogo simples com uma nave se movendo no espaço. Cada atividade extra é um check. Você deve apresentar cada check concluido para algum professor para que possamos acompanhar o seu desenvolvimento.
Além disso, cada check concluido antes da prova de Pygame vale 0.1 pontos extras! Ou seja, se você concluir os 10 checks antes da prova, você terá 1 ponto extra nas provas de Pygame.
Agora, mãos à obra!
-
Uma biblioteca é essencialmente um conjunto de módulos e funcionalidades que adicionam novas capacidades ao Python. ↩