Maison >développement back-end >Tutoriel Python >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!