Pygame: movendo objetos na tela
- #Python
Olá, seja muito bem vindo(a), nos artigos anteriores aprendemos a instalar a biblioteca do pygame e também criamos nossa tela. Outra coisa que fizemos foi a criação de um retângulo na nossa tela: https://programacao-descomplicada.blogspot.com/2022/11/pygame-desenhando-objetos-na-tela.html.
Agora, iremos fazer esse nosso retângulo se movimentar. Para isso, vamos criar, inicialmente, fora do laço while, duas variáveis inicializadas com o valor zero:
X = 0
Y = 0
Essas variáveis irão controlar o movimento do nosso retângulo, sendo que a cada iteração do loop infinito o valor dessas variáveis será alterado e isso nos dará a sensação de movimento.
Inicialmente voltaremos ao nosso código do retângulo e trocamos os números de posição do retângulo, pelo X e Y: pygame.draw.rect(tela, (255, 0, 0), (X, Y, 40, 50)). Se colocarmos embaixo do código do retângulo y = y + 1 e rodarmos o código teremos um retângulo vermelho pintando uma parte da nossa tela.
Para resolver isso, podemos passar um tela.fill() com a cor preta em RGB para pintar a tela toda vez que ocorrer o loop:
while True:
tela.fill((0,0,0))
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
exit()
pygame.draw.rect(tela, (255, 0, 0), (X, Y, 40, 50))
Y = Y + 1
pygame.display.update()
Agora quando nosso retângulo chega no final da tela ele some, como resolver isso? Simples, com uma condicional iremos devolver o valor de zero a Y quando ele for maior ou igual a altura:
while True:
tela.fill((0,0,0))
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
exit()
pygame.draw.rect(tela, (255, 0, 0), (X, Y, 40, 50))
if Y >= altura:
Y = 0
Y = Y + 1
pygame.display.update()
Por fim, podemos controlar a velocidade do movimento do retângulo. Para isso, criamos fora no nosso while uma variável chamada relógio, recebendo pygame.time.Clock(). Agora, dentro do loop adicionamos relogio.tick() e passamos quantos frames por segundo queremos que o nosso jogo rode:
while True:
relogio.tick(30)
tela.fill((0,0,0))
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
exit()
pygame.draw.rect(tela, (255, 0, 0), (X, Y, 40, 50))
if Y >= altura:
Y = 0
Y = Y + 1
pygame.display.update()
Repare que agora temos um retângulo bem mais devagar, vou ficando por aqui, um abraço e te aguardo no próximo artigo para continuarmos nosso desenvolvimento no pygame.
Artigo Original: https://programacao-descomplicada.blogspot.com/2022/11/pygame-movendo-objetos-na-tela.html