Leitores como você ajudam a apoiar o MUO. Quando você faz uma compra usando links em nosso site, podemos ganhar uma comissão de afiliado. Consulte Mais informação.

Se você é um desenvolvedor de jogos que usa a biblioteca Pygame, provavelmente já se deparou com a classe Sprite. A classe Sprite é uma ferramenta poderosa para criar personagens de jogos que você pode facilmente mover, girar e dimensionar na tela.

Com um programa Python simples, você pode aprender sobre o processo de criação de personagens de jogos baseados em sprites no Pygame. Descubra como criar uma classe Sprite básica e, em seguida, adicionar atributos e métodos para controlar o comportamento.

Introdução à classe Sprite do Pygame

A classe Sprite no Pygame é uma classe container que contém todos os atributos e comportamentos de um personagem do jogo. Deriva da classe Surface do Pygame, que representa uma imagem com largura e altura fixas.

Para trabalhar com ela, você precisará criar uma nova classe herdada da classe Sprite e definir quaisquer atributos e métodos que deseja que seu personagem do jogo tenha.

instagram viewer

Criando uma Classe Sprite Básica para um Personagem de Jogo

Primeiro, instale o módulo pygame usando pip. Faça isso com este comando:

pip instalar pygame

Para criar um sprite básico, você precisará importar a classe Sprite do Pygame e criar uma nova classe herdada dela. Em seguida, você pode definir quaisquer atributos e métodos que deseja que seu personagem do jogo tenha.

Por exemplo, você pode querer criar uma classe Sprite para um personagem do jogador que pode se mover para a esquerda e para a direita na tela. Para fazer isso, você pode definir os seguintes atributos:

  • posição: Uma tupla que contém as coordenadas x e y do sprite na tela.
  • velocidade: Uma tupla que contém a velocidade na qual o sprite se move horizontal e verticalmente.

E os seguintes métodos:

  • atualizar(): Um método que atualiza a posição do sprite com base em sua velocidade.
  • empate(): Um método que desenha o sprite na tela.

Aqui está um exemplo de uma classe Sprite básica que implementa esses atributos e métodos:

importar pygame

aulaJogador(pygame.sprite. Sprite):
def__iniciar__(auto, x, y, velocidade_x, velocidade_y):
super().__iniciar__()
auto.posição = (x, y)
auto.velocity = (velocidade_x, velocidade_y)

defatualizar(auto):
auto.posição = (auto.posição[0] + auto.velocidade[0], auto.posição[1] + auto.velocidade[1])

defempate(próprio, superfície):
pygame.empate.círculo(superfície, (255, 0, 0), auto.posição, 10)

O método __init__ é um método especial método em classes Python que é executado quando você cria uma instância da classe. Você pode usá-lo para inicializar os atributos da instância.

Nesse código, o método __init__ da classe Player usa quatro argumentos: x, y, speed_x espeed_y. Esses argumentos definem a posição inicial e a velocidade do sprite do jogador.

O método __init__ também chama o método super().__init__(), que é o método __init__ da classe pai Sprite. Isso é necessário porque a classe Player é uma subclasse da classe Sprite, e o método __init__ da classe Sprite configura alguns atributos que todos os sprites precisam.

Adicionando atributos e métodos para controlar o comportamento

Agora que você tem uma classe Sprite básica, pode adicionar atributos e métodos para controlar o comportamento do personagem do jogo. Isso pode incluir coisas como movimento, ataque, salto e muito mais.

Para adicionar esses atributos e métodos, você precisará pensar em quais ações deseja que seu jogo personagem para ser capaz de executar e definir os atributos e métodos correspondentes em seu Sprite aula.

Por exemplo, você pode querer adicionar um método para controlar o movimento do sprite, como um método move_left() que diminui a velocidade do sprite no eixo x.

Aqui está um exemplo de uma classe Sprite modificada que inclui estes atributos e métodos adicionais:

aulaJogador(pygame.sprite. Sprite):
def__iniciar__(auto, x, y, velocidade_x, velocidade_y):
super().__iniciar__()
auto.posição = (x, y)
auto.velocity = (velocidade_x, velocidade_y)

defatualizar(auto):
auto.posição = (auto.posição[0] + auto.velocidade[0], auto.posição[1] + auto.velocidade[1])

defempate(próprio, superfície):
pygame.empate.círculo(superfície, (255, 0, 0), auto.posição, 10)

defMova para a esquerda(auto):
auto.velocidade = (-1, auto.velocidade[1])

defmove_right(auto):
auto.velocidade = (1, auto.velocidade[1])

Para usar a classe Player em seu jogo Pygame, você precisará criar uma instância da classe e chamar seus métodos conforme necessário.

Comece criando uma janela e uma instância do sprite Player:

# Inicializa Pygame
pygame.init()

# Defina o tamanho da janela
tamanho_janela = (640, 480)

# Cria uma janela
janela = pygame.display.set_mode (window_size)

# Crie um sprite de jogador
jogador = jogador(320, 240, 0, 0)

Em seguida, defina um loop de jogo principal que manipule eventos de teclado e atualize e desenhe o sprite. Quando você pressiona as teclas de seta para a esquerda ou para a direita, o sprite se moverá na direção correspondente.

# Loop principal do jogo
enquantoVerdadeiro:
# Tratar eventos
para evento em pygame.event.get():
se event.type == pygame. DESISTIR:
pygame.quit()
sys.exit()

se event.type == pygame. TECLA PARA BAIXO:
se event.key == pygame. K_ESQUERDA:
player.move_left()
elif event.key == pygame. K_RIGHT:
player.move_right()

# Atualize o sprite do jogador
player.update()

# Limpa a janela
window.fill((255, 255, 255))

# Desenhe o sprite do jogador
player.draw (janela)

# Atualize a exibição
pygame.display.update()

Com o programa resultante, você poderá controlar o sprite do jogador e observá-lo desenhando na tela em diferentes posições:

Carregando e exibindo gráficos sprite usando o módulo de imagem

Agora que você tem uma classe Sprite básica com atributos e métodos para controlar o comportamento, provavelmente desejará adicionar alguns gráficos ao seu sprite. O módulo de imagem do Pygame facilita o carregamento e exibição de imagens na tela.

Para carregar uma imagem, você precisará usar a função pygame.image.load(), que usa um caminho de arquivo como argumento e retorna um objeto Surface. Você pode atribuir esse objeto Surface a um atributo sprite, como self.image, que pode ser usado para desenhar o sprite na tela.

Por exemplo, veja como você pode carregar uma imagem e atribuí-la a um sprite:

importar pygame

aulaJogador(pygame.sprite. Sprite):
def__iniciar__(auto, x, y, velocidade_x, velocidade_y, imagem_caminho):
super().__iniciar__()
auto.posição = (x, y)
auto.velocity = (velocidade_x, velocidade_y)
auto.image = pygame.image.load (image_path)

defatualizar(auto):
auto.posição = (auto.posição[0] + auto.velocidade[0], auto.posição[1] + auto.velocidade[1])

defempate(próprio, superfície):
superfície.blit(auto.imagem, auto.posição)

defMova para a esquerda(auto):
auto.velocidade = (-1, auto.velocidade[1])

defmove_right(auto):
auto.velocidade = (1, auto.velocidade[1])

Este código define uma classe Player que estende a classe Sprite do Pygame e inclui atributos para posição, velocidade e imagem, bem como métodos para atualizar a posição do sprite, desenhar o sprite na tela e controlar movimento.

Você pode verificar isso Repo do GitHub para o código completo!

Melhore o gerenciamento de Sprite com a classe Sprite

A classe Sprite fornece um contêiner conveniente para todos os atributos e comportamentos de um personagem do jogo, tornando mais fácil atualizar, desenhar e controlar o sprite na tela.

Ao implementar uma classe Sprite em seu jogo Pygame, você pode melhorar a experiência geral de seus jogadores e agilizar o processo de desenvolvimento para você.