Acompanhamento do estudo
Checks do estudo de Pygame
Você pode ganhar até 1.0 ponto extra nas provas de Pygame ao realizar os checks de estudo (cada check realizado e validado antes da prova vale 0.1 pontos).
Comece criando o seu repositório do GitHub classroom acessando este link.
Os checks estão listados abaixo. Cada um deles deve ser feito após a conclusão de um handout específico. Faça o handout antes de tentar implementar o check.
- Criar janela com fundo preto que fecha quando o usuário clica no botão de fechar. Pode ser feito após a conclusão do handout "02. Criando uma janela".
- Desenhar a nave (arquivo
assets/img/playerShip1_orange.png
) na tela e pequenos círculos brancos em posições e tamanhos aleatórios para representar as estrelas. Consulte a documentação da funçãopygame.transform.scale
para aprender a redimensionar a imagem da nave para um tamanho razoável. Você também deve desenhar a imagem de fundo (arquivoassets/img/starfield.png
). Pode ser feito após a conclusão do handout "03. Desenhando na tela: Desenhando imagens". - Adicionar um texto no canto superior esquerdo indicando as vidas. Utilize a fonte em
assets/font/PressStart2P.ttf
para desenhar um coração para cada vida (use 3 vidas inicialmente). O caracterechr(9829)
é o coração (ex:coracoes = chr(9829) * 3
gera uma string com 3 corações). Pode ser feito após a conclusão do handout "03. Desenhando na tela: Desenhando texto". - Adicionar um texto no canto inferior direito com o cálculo de FPS. Pode ser feito após a conclusão do handout "05. Física: Lidando com o tempo".
- Mover a nave com o teclado. O teclado deve mudar apenas a velocidade da nave. A posição da nave deve ser atualizada com base nessa velocidade. Pode ser feito após a conclusão do handout "05. Física: Movimento Retilíneo Uniforme".
- Criar meteoros (imagem
assets/img/meteorBrown_med1.png
) em posições aleatórias do mapa se movimentando para baixo (se preferir, pode implementar a movimentação aleatória). Quando a nave colidir com algum meteoro, o jogador deve perder uma vida. Quando a quantidade de vidas chegar a zero, o jogo deve fechar. Pode ser feito após a conclusão do handout "06. Colisões". - Tocar uma música de fundo (arquivo
assets/snd/tgfcoder-FrozenJam-SeamlessLoop.ogg
) desde o começo do jogo e tocar um som de tiro (arquivoassets/snd/pew.wav
) quando o jogador aperta a tecla ESPAÇO. Pode ser feito após a conclusão do handout "07. Som". - Refatorar o código para usar classes e implementar múltiplas telas (início, jogo, gameover com opção de recomeçar o jogo). No mínimo deve possuir as classes
Jogo
,TelaInicial
,TelaJogo
,TelaGameOver
,Nave
,Meteoro
. As classesNave
eMeteoro
devem estende a classepygame.sprite.Sprite
. Os meteoros devem ser adicionados em umpygame.sprite.Group
e as colisões devem ser verificadas com opygame.sprite.groupcollide
. Pode ser feito após a conclusão do handout "08. Classes". - Atirar quando o jogador aperta espaço (utilize a imagem
assets/img/laserRed16.png
). O tiro deve sair da nave. Caso o tiro atinja um meteoro, tanto o meteoro quanto o tiro devem deixar de existir. Deve criar uma classeTiro
para desenhar e atualizar a posição de cada tiro. Pode ser feito após a conclusão de todos os handouts. - Animação de explosão quando um meteoro explode. As imagens da animação estão disponíveis em
assets/img/regularExplosionXX.png
comXX
entre00
e08
. Deve criar uma classeExplosao
, responsável pela animação da explosão do meteoro. Caso prefira, você pode modificar a classeMeteoro
ao invés criar uma nova classe. Pode ser feito após a conclusão de todos os handouts.