Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Mencegah Tembakan Peluru Serentak dalam Pygame?
Bagaimanakah saya boleh menghentikan lebih daripada satu peluru daripada melepaskan tembakan serentak?
Dalam Pygame, menggunakan kaedah append() untuk menambah berbilang peluru pada senarai apabila pemain tembakan menyebabkan semua peluru menembak serentak. Untuk mengelakkan ini, laksanakan pemasa yang menjarakkan tembakan peluru.
Berikut ialah versi kod anda yang diubah suai yang menggabungkan pemasa:
<code class="python">import pygame pygame.init() # Game settings screenWidth = 800 screenHeight = 600 clock = pygame.time.Clock() # Bullet settings bullet_delay = 500 # Time in milliseconds between shots next_bullet = 0 # Time of next bullet # Player settings player1 = pygame.sprite.Sprite() player1.image = pygame.Surface((50, 50)) player1.image.fill((255, 0, 0)) player1.rect = player1.image.get_rect() player1.rect.center = (screenWidth / 2, screenHeight / 2) # Group to hold all bullets bullets = pygame.sprite.Group() # Game loop run = True while run: clock.tick(30) for event in pygame.event.get(): if event.type == pygame.QUIT: run = False elif event.type == pygame.KEYDOWN: if event.key == pygame.K_SPACE: # Check if enough time has passed since last shot current_time = pygame.time.get_ticks() if current_time >= next_bullet: # Create a new bullet bullet = pygame.sprite.Sprite() bullet.image = pygame.Surface((10, 10)) bullet.image.fill((0, 0, 0)) bullet.rect = bullet.image.get_rect() bullet.rect.center = player1.rect.center # Add bullet to group bullets.add(bullet) # Reset next bullet time next_bullet = current_time + bullet_delay # Update game objects player1.update() bullets.update() # Handle bullet movement for bullet in bullets: bullet.rect.y -= 5 # Change to desired bullet speed # Remove any bullets that have moved off the screen if bullet.rect.bottom <= 0: bullets.remove(bullet) # Draw objects on the screen screen.fill((0, 0, 0)) screen.blit(player1.image, player1.rect) bullets.draw(screen) # Update the display pygame.display.update() pygame.quit()</code>
Dalam kod yang diubah suai ini, bullet_delay menentukan kelewatan antara tangkapan dan next_bullet menjejaki masa tangkapan seterusnya yang dibenarkan. Apabila pemain menekan ruang, kami menyemak sama ada masa telah berlalu sejak pukulan terakhir (berdasarkan next_bullet). Jika ya, peluru dibuat dan ditambah pada kumpulan peluru. Pemasa ini memastikan bahawa hanya satu peluru boleh dilepaskan pada satu masa, dengan kelewatan ditentukan oleh bullet_delay.
Atas ialah kandungan terperinci Bagaimana untuk Mencegah Tembakan Peluru Serentak dalam Pygame?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!