Francileudo Oliveira
Francileudo Oliveira17/11/2022 13:48
Compartilhe

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

Compartilhe
Comentários (1)

RS

Ralison Santos - 17/11/2022 20:53