Francileudo Oliveira
Francileudo Oliveira22/11/2022 08:24
Compartilhe

pygame: Aumentando o tamanho da cobra e modificando cores

  • #Python

Olá, seja muito bem vindo(a), no artigo anterior nós desenvolvemos a pontuação do jogo e colocamos um texto para ser exibido na tela do game: https://programacao-descomplicada.blogspot.com/2022/11/pygame-escrevendo-textos-na-tela-do.html, hoje nós iremos começar a organizar o nosso jogo da cobrinha melhorando ele.

  Primeiro vamos modificar as cores da nossa cobra e da comida, sendo que a cobra eu escolhi um verde mais chegado no marrom com o seguinte código RGB: (85,107,47), o link a seguir tem vários tons diferentes para sua escolha: 

  Para a comida, que eu vou renomear essa variável para maçã, deixarei dessa cor (178,34,34). Observação: não esqueça de trocar o nome comida para maca nos demais locais em que ele aparece no código caso você for trocar o nome da variável:

cobra = pygame.draw.rect(tela, (85,107,47), (X, Y, 20, 20))

maca = pygame.draw.rect(tela, (178,34,34), (XComida, YComida, 20, 20))

  Agora eu deixo com você, caso queira modificar a cor de fundo da tela do jogo ou a cor e fonte do texto na tela fique à vontade. A próxima etapa seria fazer com que nossa cobra comece a ganhar tamanho à medida que for comendo as maçãs na tela. 

  Primeiro teremos uma lista para armazenar os valores de posição atual da cabeça da nossa cobra, colocando o seguinte código dentro do laço while:

lista_posicaoCabeca = []

lista_posicaoCabeca.append(XCobra)

lista_posicaoCabeca.append(YCobra)

  Repare que eu também modifiquei o nome da variável X e Y da posição da cobra. Agora vamos criar uma lista para armazenar a posição da cabeça da cobra, no caso teremos uma lista dentro de outra:

lista_cobra = []

lista_cobra.append(lista_posicaoCabeca)

  Agora, fora do nosso while, vamos criar a função para aumentar o tamanho da nossa cobra, dentro da função que recebe a lista_cobra como parâmetro, nós vamos criar um for onde para toda posição X e Y vamos desenhar um quadrado:

def tamanho_cobra(lista_cobra):

 for XeY in lista_cobra:

 pygame.draw.rect(tela, (85,107,47), (XeY[0], XeY[1], 20, 20))

  Agora, de volta para dentro do nosso loop, chamamos a função e passamos como parâmetro a lista_cobra. Agora, se dermos um play no jogo não acontece nada, isso porque esquecemos que a cada iteração no jogo o loop while atualiza. No caso, temos que tirar a nossa lista tamanho_cobra para fora desse loop. 

  Se você der um play, funcionou, mas agora temos uma tela sendo pintada pela cobra, algo de errado não está certo aqui. Para resolvermos isso vamos tentar deletar o primeiro elemento da nossa lista_cobra e ver o que acontece.

  Primeiro vamos criar uma variável fora do loop para nosso comprimento inicial, e vamos colocar 5 dentro dessa variável. Abaixo do nosso último append dentro do laço while vamos colocar a condicional para deletar a posição inicial da lista_cobra:

if len(lista_cobra) > tamanho_inicial_cobra:

  del lista_cobra[0]

  No caso, se o tamanho da lista_cobra for maior que o número 5 que está na nossa variável, nós deletamos o que está na posição 0 da lista. Com isso a cobra já está melhor, agora vamos fazer ela crescer sempre que comer a maçã.

  Para isso, só precisamos somar mais um na nossa variável que guarda o número 5. Colocando o código tamanho_inicial_cobra = tamanho_inicial_cobra + 1 dentro da condicional de colisão já teremos resolvido isso. 

  Bom, repare que agora, nossa cobra está crescendo, porém isso só ocorre quando estamos movimentando ela, vamos resolver isso no próximo artigo, mas deixo para você ir pensando no que fazer até lá. Um abraço e até a próxima.

Artigo Original: https://programacao-descomplicada.blogspot.com/2022/11/pygame-aumentando-o-tamanho-da-cobra-e.html

Compartilhe
Comentários (1)
Olival Neto
Olival Neto - 22/11/2022 09:07

Pygame é vida