"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment tirer une balle en direction de la souris dans Pygame ?

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

Publié le 2024-11-07
Parcourir:928

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

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

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

Classe pour la puce

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.

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))

Fonctions de classe de jeu

Ensuite, créez une classe pour le jeu. Cette classe contiendra des fonctions pour tirer et générer des balles.

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

En utilisant 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.

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()

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

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3