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