한 번에 두 개 이상의 총알이 발사되는 것을 어떻게 막을 수 있나요?
Pygame에서 플레이어가 실행될 때 목록에 여러 개의 총알을 추가하려면 Append() 메서드를 사용하세요. 사격은 모든 총알이 동시에 발사되도록 합니다. 이를 방지하려면 총알 발사 간격을 지정하는 타이머를 구현하세요.
다음은 타이머를 포함하는 코드의 수정된 버전입니다.
<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>
이 수정된 코드에서 bullet_delay는 샷 사이의 지연과 next_bullet은 허용된 다음 샷의 시간을 추적합니다. 플레이어가 스페이스바를 누르면 마지막 샷 이후 충분한 시간이 지났는지 확인합니다(next_bullet 기준). 그렇다면 글머리 기호가 생성되어 글머리 기호 그룹에 추가됩니다. 이 타이머는 bullet_delay에 지정된 지연을 사용하여 한 번에 하나의 총알만 발사할 수 있도록 보장합니다.
위 내용은 파이게임에서 동시 총알 발사를 방지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!