Movendo e Animando um Sprite
Introdução: O GameLoop
Para mover um Sprite, precisamos do que chamamos de GameLoop.
O GameLoop é um loop infinito que executa a lógica do jogo e em seguida realiza as renderizações.
Fazer um Sprite se mover não passa de:
- 1 – Alterar sua posição na janela;
- 2 – Pintar a janela com a cor de fundo padrão (ou repintar a imagem de fundo);
- 3 – Desenhar o frame atual (já em sua nova posição);
- 4 – Por fim, chamar o update() da janela para mostrar as alterações.
Mover um Sprite na Tela
# Primeiro temos que importar os módulos que iremos usar:
from PPlay.window import *
from PPlay.sprite import *
# Como sempre, criamos primeiro a janela
janela = Window(300, 300)
# Associamos então uma variável ao Sprite
ball = Sprite("graycreep.png")
# O GameLoop
while True:
# Atualizamos a lógica do jogo
ball.move_x(0.1) # move a ball 0.1 pixels por frame sobre X
ball.move_y(0.1) # análogo
# Pintamos o fundo da tela
janela.set_background_color((0, 0, 0)) # Preto
# E depois o Sprite
ball.draw()
# POR ÚLTIMO, atualizamos a janela mostrando as mudanças
janela.update()
Mover um Sprite com o Teclado
# Basta mudar as linhas 14 e 15 do código anterior
# ball.move_x(0.1)
# ball.move_y(0.1)
# Para
ball.move_key_x(0.1)
ball.move_key_y(0.1)
# As teclas padrão são UP, DOWN, RIGHT, LEFT.
Animando o Sprite
"""A animação consiste de uma sequência de imagens.
Para tal, passamos um arquivo de imagem e o número de frames em que ela está dividida.
No caso, utilizamos uma imagem de 608x120 pixels.
Portanto, ela será dividida (horizontalmente) em 8 frames de 76 pixels cada.
As funções serão explicadas conforme forem usadas."""
from PPlay.window import *
from PPlay.sprite import *
janela = Window(400, 400)
# Atenção ao segundo parâmetro para criar o Sprite!!!
animacao = Sprite("walking.png", 8) # 8 frames
# Sempre deve ser chamado antes de executar a animacao
animacao.set_total_duration(1000) # duração em milissegundos
# GameLoop
while True:
janela.set_background_color((255, 255, 255)) # branco
animacao.move_key_x(0.1) # mesma coisa do exemplo 2.2
animacao.move_key_y(0.1)
animacao.draw()
# ATENÇÃO!!! Tem que ser chamada para que mude o frame!!
animacao.update()
janela.update()
Créditos do Tutorial: Gabriel Saldanha