Maison >développement back-end >Tutoriel Python >Comment implémenter le tir de balles avec la barre d'espace dans Pygame ?
Ce guide aborde la mise en œuvre du tir de balles avec la barre d'espace dans un programme Pygame.
Gestion des balles
Stockez les positions des balles dans une liste (bullet_list). Lorsqu'une balle est tirée, ajoutez sa position de départ ([start_x, start_y]) à la liste. Mettez à jour les positions des puces dans la liste. Supprimez toutes les puces qui quittent l'écran.
Interaction entre le joueur et la balle
Mettez à jour et dessinez en continu des objets dans la boucle principale de l'application. La classe Bullet doit avoir des méthodes pour initialiser, mettre à jour et dessiner les puces.
Définir les classes pour Bullet et Player :
<code class="python">class Bullet: def __init__(self, x, y): # Initial properties self.x = x self.y = y self.radius = 10 self.speed = 10 def update(self): # Move the bullet self.y -= self.speed def draw(self): # Draw the bullet pygame.draw.circle(d, (255, 0, 0), (self.x, self.y), self.radius) class Player: def __init__(self, x, y, height, width): # Initial properties self.x = x self.y = y self.height = height self.width = width self.speed = 2 def draw(self): # Draw the player pygame.draw.rect(d, (0, 0, 0), (self.x, self.y, self.width, self.height)) def move_left(self): # Move player left self.x -= self.speed def move_right(self): # Move player right self.x += self.speed</code>
Initialisez le jeu, définissez les objets et entrez dans la boucle principale. Gérez les événements, mettez à jour les objets, effacez l'affichage, dessinez la scène et mettez à jour l'affichage dans chaque image :
<code class="python"># Initialize game pygame.init() clock = pygame.time.Clock() d = pygame.display.set_mode((1200, 600)) # Define objects bullets = [] p = Player(600, 500, 50, 30) # Main loop run = True while run: # Handle events for event in pygame.event.get(): if event.type == pygame.QUIT: run = False if event.type == pygame.KEYDOWN: if event.key == pygame.K_SPACE: bullets.append(Bullet(p.x + p.width // 2, p.y)) # Update objects keys = pygame.key.get_pressed() if keys[pygame.K_LEFT]: p.move_left() if keys[pygame.K_RIGHT]: p.move_right() for b in bullets: b.update() if b.y < 0: bullets.remove(b) # Clear display d.fill((98, 98, 98)) # Draw scene for b in bullets: b.draw() p.draw() # Update display pygame.display.update() clock.tick(100)</code>
Avec cette approche, vous pouvez tirer efficacement des balles en utilisant la barre d'espace tout en conservant à la fois le joueur et les projectiles. sur 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!