• Jogos
  • 03. Colisões e som
  • Colisões e som

Colisões e som#

Estamos quase finalizando nosso conteúdo básico de jogos! Faltam só dois elementos para conseguirmos um jogo que tenha todos os elementos básicos no lugar:

  • Som: bons efeitos gráficos e trilha sonora são essenciais. A Pygame já tem alguns recursos de uso fácil para trabalhar com sons.
  • Colisões: todo jogo precisa saber quando dois objetos se sobrepõem. Pode ser tanto para evitar que personagens atravessem paredes como para checar se encostaram em um inimigo ou mesmo se acertaram algum golpe.

Vamos examinar esses dois temas no dia de hoje.

Colisões#

Ao detectar colisões o formato dos objetos faz toda a diferença. As maneiras mais simples de detectar se houve colisão são envolver o objeto em círculos ou retângulos e checar por colisões entre essas formas. Vamos começar com dois exercícios simples: checar se o usuário clicou em um círculo e em um retângulo

Exercise 1

Resolva o exercício Verifica cliques.

Acessar exercício

Como quase nenhum objeto de um jogo é um ponto, precisamos de algo que nos permita representar mais situações. A colisão entre retângulos é bastante rápida e funciona bem em muitos casos simples.

Exercise 2

Resolva o exercício Retângulos colidindo.

Acessar exercício

Agora que entendemos um pouco melhor colisões podemos aproveitar as funções que a própria pygame nos oferece.

Exercise 3

Vamos novamente consultar a documentação da Pygame para aprender a usar as funções de colisão. Dadas as variáveis abaixo, consulte a documentação de pygame.Rect e escreva como checar se existe colisão entre elas.

r1 = pygame.Rect(10, 20, 30, 40)
r2 = pygame.rect(15, 22, 10, 20)

Answer

Usamos a função colliderect para isto. Podemos fazer tanto r1.colliderect(r2) quanto r2.colliderect(r1).

Volte nos exercícios anteriores e faça uma nova versão usando as funções da Pygame.

Som#

A utilização de recursos de som é bastante simples em Pygame. O exemplo de código abaixo carrega um arquivo de áudio e toca ele.

explosao = pygame.mixer.Sound('explosao.mp3')
explosao.play()

Exercise 4

Em qual das funções da estrutura básica você faria o carregamento do som?

Answer

Assim como todos recursos do jogo, o carregamento deve ser feito na função inicializa e o recurso deve ser guardado no dicionário assets para poder ser usado nas outras funções do jogo.

Exercise 5

Supondo que queremos tocar o som quando houver uma colisão com inimigo, em qual das funções da estrutura básica você chamaria explosao.play()?

Answer

A checagem de colisões acontece em atualiza_estado, logo podemos por a função que inicia a reprodução do som também em atualiza_estado.

Ativiade final - Semana 1#

Para finalizar nossa primeira semana vamos propor a criação de um jogo simples.

Os recursos do jogo e a estrutura básica estão disponíveis no exercício Finalizando semana 1. Verifique seu trabalho usando as animações presentes na descrição do jogo.

Acessar exercício