ホームページ >バックエンド開発 >Python チュートリアル >Pygameで弾丸の同時発射を防ぐにはどうすればよいですか?
一度に複数の弾丸の発射を停止するにはどうすればよいですか?
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_lay によって、ショット間の遅延と next_bullet は次に許可されるショットの時間を追跡します。プレイヤーがスペースを押すと、最後のショットから十分な時間が経過したかどうかを確認します (next_bullet に基づいて)。そうであれば、箇条書きが作成され、箇条書きグループに追加されます。このタイマーは、弾丸を一度に 1 つだけ発射できるようにし、その遅延は Bullet_lay で指定されます。
以上がPygameで弾丸の同時発射を防ぐにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。