• Jogos
  • 08. Classes

Classes no Pygame

Classes das telas

Suponha que queremos ter mais do que uma tela no nosso jogo. Em uma tela inicial, temos um tipo de interação diferente de uma tela de jogo, que também é diferente de uma tela de fim de jogo. Provavelmente precisaremos de estados diferentes para cada uma dessas telas. Também precisaremos de assets diferentes para cada tela. Além disso, se quisermos implementar fases, é provável que algumas fases tenham elementos em comum entre si, enquanto outras coisas precisam ser diferentes.

Até o momento, não teríamos muitas maneiras de lidar com isso a não ser armazenando dicionários gigantes com uma possibilidade diferente para cada tela. Nas funções de desenho e atualização de estado, seria necessário uma série de ifs para verificar qual tela estamos e quais são as ações possíveis.

Isso facilmente sai do controle (como já deve ter acontecido com alguns de vocês ao longo do projeto individual).

As classes podem ser bastante úteis para nos ajudar a organizar o código dessas funcionalidades.

Exercício 1

Vamos fazer mais um exercício de refatoração. Desta vez teremos 3 arquivos. Um deles é o arquivo original (jogo_v0.py), o outro é o que você deve modificar (jogo_refatorado.py) e o outro é uma sugestão de refatoração para você comparar (jogo_sugestao.py).

Faça o exercício Usando classes para o jogo e para as telas.

Acessar exercício

CHECK 8

Agora você já pode fazer o check 8. Depois de concluir, faça um commit (não se esqueça de sincronizar/dar push) com a mensagem "Check 8".

Não se esqueça de mostrar para algum professor para ganhar o check!

CHECK 9

Agora você já pode fazer o check 9. Depois de concluir, faça um commit (não se esqueça de sincronizar/dar push) com a mensagem "Check 9".

Não se esqueça de mostrar para algum professor para ganhar o check!

CHECK 10

Agora você já pode fazer o check 10. Depois de concluir, faça um commit (não se esqueça de sincronizar/dar push) com a mensagem "Check 10".

Não se esqueça de mostrar para algum professor para ganhar o check!