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()

Download do Código Completo


Créditos do Tutorial: Gabriel Saldanha