pygame: Melhorando a movimentação da nossa cobrinha
- #Python
Olá, seja muito bem vindo(a), anteriormente nós começamos a organização do nosso código para o jogo da cobrinha: https://programacao-descomplicada.blogspot.com/2022/11/pygame-aumentando-o-tamanho-da-cobra-e.html, porém o tamanho da nossa cobra só é visível quando estamos movimentando ela, por isso hoje nós iremos deixar a cobrinha em movimento constante, no qual quando clicarmos nas teclas de movimentação mudarmos apenas a direção para onde ela vai.
Primeiro nós iremos comentar a nossa parte de movimento e adicionar o seguinte código no lugar:
if event.type == KEYDOWN:
if event.key == K_a:
if event.key == K_d:
if event.key == K_w:
if event.key == K_s:
Agora, fora do nosso while, vamos colocar duas variáveis, uma chamada XControle, que recebe 20 como dados, e outra chamada YControle, que recebe 0. Com isso iremos organizar nossa condicional acima:
if event.type == KEYDOWN:
if event.key == K_a:
XControle = -20
YControle = 0
if event.key == K_d:
XControle = 20
YControle = 0
if event.key == K_w:
YControle = -20
XControle = 0
if event.key == K_s:
YControle = 20
XControle = 0
Agora, ainda dentro do while, iremos colocar nossas variáveis X e YCobra para receberem elas mesmas mais o X e YControle:
XCobra = XCobra + XControle
YCobra = YCobra + YControle
Assim nossa cobra vai se mover sem parar, mudando apenas de direção quando clicarmos nos botões do teclado. Mas a velocidade da nossa cobra está muito rápida, para resolver isso basta modificar o valor de 20 na variável XControle e todos os 20 dentro da condicional vista acima, ou podemos criar uma variável e passar nesse locais para ficar mais fácil modificar novamente no futuro.
velocidade = 10
XControle = velocidade
YControle = 0
. . .
if event.type == KEYDOWN:
if event.key == K_a:
XControle = -velocidade
YControle = 0
if event.key == K_d:
XControle = velocidade
YControle = 0
if event.key == K_w:
YControle = -velocidade
XControle = 0
if event.key == K_s:
YControle = velocidade
XControle = 0
Só para deixar mais interessante, repare que quando clicamos para frente e para trás a cabeça da cobra muda. Isso não aconteceria na vida real, por isso se clicarmos para ir para frente não poderíamos ir para trás desse jeito, para resolver isso só precisamos bloquear as teclas colocando condicionais desse jeito:
if event.type == KEYDOWN:
if event.key == K_a:
if XControle == velocidade:
pass
else:
XControle = -velocidade
YControle = 0
if event.key == K_d:
if XControle == -velocidade:
pass
else:
XControle = velocidade
YControle = 0
if event.key == K_w:
if YControle == velocidade:
pass
else:
YControle = -velocidade
XControle = 0
if event.key == K_s:
if YControle == -velocidade:
pass
else:
YControle = velocidade
XControle = 0
Agora sim, nossa cobrinha está se movimentando perfeitamente, vou ficando por aqui, nos próximos artigos estaremos concluindo nosso projeto usando o pygame, um abraço e até a próxima.
Artigo Original: https://programacao-descomplicada.blogspot.com/2022/11/pygame-melhorando-movimentacao-da-nossa.html