"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como atirar uma bala na direção do mouse no Pygame?

Como atirar uma bala na direção do mouse no Pygame?

Publicado em 2024-11-07
Navegar:938

How to shoot a bullet in the direction of the mouse in Pygame?

Como atirar uma bala na direção do mouse no Pygame

No Pygame, pode-se criar uma bala que é disparada na direção do mouse. Para fazer isso, seria necessário criar uma classe que representasse o marcador e definir sua posição inicial e direção com base na posição do mouse.

Classe para o marcador

Primeiro, crie uma classe para o marcador. Esta classe deve incluir atributos para posição, tamanho e superfície do marcador. A superfície é o que será renderizado na tela.

import pygame

class Bullet:
    def __init__(self, x, y):
        self.x = x
        self.y = y
        self.height = 7
        self.width = 2
        self.bullet = pygame.Surface((self.width, self.height))
        self.bullet.fill((255, 255, 255))

Funções de classe de jogo

Em seguida, crie uma classe para o jogo. Esta classe conterá funções para disparar e gerar balas.

class Game:
    def __init__(self):
        self.bullets = []
    
    def shoot_bullet(self):
        mouse_x, mouse_y = pygame.mouse.get_pos() # Get the mouse position
        for bullet in self.bullets:
            rise = mouse_y - bullet.y # Calculate the difference between mouse and bullet y position
            run = mouse_x - bullet.x # Calculate the difference between mouse and bullet x position
            angle = math.atan2(rise, run) # Calculate the angle between mouse and bullet

            bullet.x  = math.cos(angle) * 10 # Update bullet x position
            bullet.y  = math.sin(angle) * 10 # Update bullet y position

            # Rotate and draw the bullet
            rotated_bullet = pygame.transform.rotate(bullet.bullet, -math.degrees(angle))
            screen.blit(rotated_bullet, (bullet.x, bullet.y))

    def generate_bullet(self):
        mouse_buttons = pygame.mouse.get_pressed() # Check if mouse is clicked
        if mouse_buttons[0]: # If left mouse button is clicked
            self.bullets.append(Bullet(player.x, player.y)) # Create a new bullet

Usando a classe Bullet

No loop principal do jogo, crie uma instância da classe Game e chame as funções shoot_bullet e generate_bullet.

game = Game()

while running:
    # Event handling

    # Update
    game.shoot_bullet()
    game.generate_bullet()
    
    # Draw
    screen.fill((0, 0, 0))
    for bullet in game.bullets:
        screen.blit(bullet.bullet, (bullet.x, bullet.y))
    pygame.display.update()

Este código criará uma bala que será disparada na direção do mouse. O marcador se moverá até sair da tela.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3