Maison >développement back-end >Tutoriel Python >Comment tirer une balle en direction de la souris dans Pygame ?

Comment tirer une balle en direction de la souris dans Pygame ?

DDD
DDDoriginal
2024-10-29 19:17:30659parcourir

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

Comment tirer une balle en direction de la souris dans Pygame

Dans Pygame, on peut créer une balle qui est tirée en direction de la souris. Pour ce faire, il faudrait créer une classe qui représente la balle et définir sa position et sa direction initiales en fonction de la position de la souris.

Classe pour la balle

Tout d’abord, créez une classe pour la puce. Cette classe doit inclure des attributs pour la position, la taille et la surface de la balle. La surface est ce qui sera rendu à l'écran.

<code class="python">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))</code>

Fonctions de classe de jeu

Ensuite, créez une classe pour le jeu. Cette classe contiendra des fonctions de tir et de génération de balles.

<code class="python">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</code>

Utilisation de la classe Bullet

Dans la boucle principale du jeu, créez une instance de la classe Game et appelez les fonctions shoot_bullet et generate_bullet.

<code class="python">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()</code>

Ce code créera une balle qui est tirée dans la direction de la souris. La balle bougera jusqu'à ce qu'elle disparaisse de l'écran.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn