Francileudo Oliveira
Francileudo Oliveira18/11/2022 15:12
Compartilhe

Pygame: Movendo objetos com teclado e colisões entre objetos

  • #Python

 Olá, seja muito bem vindo(a), no artigo anterior sobre pygame: https://programacao-descomplicada.blogspot.com/2022/11/pygame-movendo-objetos-na-tela.html, construímos um retângulo que se movia em uma parte da tela, porém sozinho. Hoje nós vamos fazer esse retângulo se mover usando o teclado, levando ele para qualquer local da tela.

  Inicialmente vamos fazer com que nosso retângulo pare de se mover sozinho, deletando a parte de código a seguir do nosso projeto:

if Y >= altura:

  Y = 0



Y = Y + 1

Agora iremos nas nossas variáveis X e Y para adicionarmos o seguinte código neles:

X = largura/2

Y = altura/2

  Desse modo, nosso retângulo irá ficar no meio da nossa tela ao iniciarmos o jogo. Agora, dentro do nosso while vamos escrever condicionais para a movimentação do nosso retângulo. A Primeira condição verifica se a tecla “a” foi pressionada para mover o nosso objeto para o lado esquerdo apenas modificando o eixo X:

if pygame.key.get_pressed()[K_a]:

  X = X - 20

  A função get_pressed() do pygame vai nos garantir a sensação de movimentação contínua enquanto o usuário estiver clicando na tecla a. Agora, fazendo condicionais para as demais teclas, sendo a tecla d para o movimento do lado direito, a tecla w para cima e a tecla s para baixo. Obtemos o seguinte código no final: 

if pygame.key.get_pressed()[K_a]:

  X = X - 20

if pygame.key.get_pressed()[K_d]:

  X = X + 20

if pygame.key.get_pressed()[K_w]:

  Y = Y - 20

if pygame.key.get_pressed()[K_s]:

  Y = Y + 20

  Agora, avançando no nosso projeto do jogo da cobrinha, vamos construir um novo retângulo, nos artigos anteriores eu já mostrei como fazer isso, então vou direto para o código final:

pygame.draw.rect(tela, (33, 138, 95), (200, 300, 40, 50))

  Agora vamos armazenar os dois retângulos em variáveis assim como no código abaixo:

cobra = pygame.draw.rect(tela, (255, 0, 0), (X, Y, 40, 50))

comida = pygame.draw.rect(tela, (33, 138, 95), (200, 300, 40, 50))

  Agora usaremos um método no nosso retângulo vermelho para verificar se ele colidiu com algo, no qual passamos como parametro:

if cobra.colliderect(comida):

  Agora vamos desenvolver a condicional, se houver a colisão queremos que o retângulo verde mude de posição de forma aleatória na tela, para isso iremos importar uma função que sorteia valores em um determinado intervalo:

from random import randint

  Agora vamos criar as variáveis de posição para o segundo retângulo, bem como fizemos no retângulo vermelho com X e Y: https://programacao-descomplicada.blogspot.com/2022/11/pygame-desenhando-objetos-na-tela.html e vamos passar a função randint com o intervalo de números que queremos: 

Xcomida = randint(40, 600)

Ycomida = randint(50, 430)

…

comida = pygame.draw.rect(tela, (33, 138, 95), (XComida, YComida, 40, 50))

  Agora, dentro da condicional passaremos novamente as variáveis de posição para que elas sejam sorteadas sempre que o retângulo vermelho colidir com o verde, assim a nossa “comida” sempre vai aparecer em algum local da tela.

if cobra.colliderect(comida):

  XComida = randint(40, 600)

  YComida = randint(50, 430)

  Com isso temos uma grande parte do nosso joguinho construído, mas ainda temos mais coisas a fazer, vou ficando por aqui mas volto para terminarmos esse projeto, um abraço e até o próximo artigo.

Artigo Original: https://programacao-descomplicada.blogspot.com/2022/11/pygame-movendo-objetos-com-teclado-e.html

Compartilhe
Comentários (0)