"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > Pygame में एक साथ बुलेट फायरिंग को कैसे रोकें?

Pygame में एक साथ बुलेट फायरिंग को कैसे रोकें?

2024-11-03 को प्रकाशित
ब्राउज़ करें:744

How to Prevent Simultaneous Bullet Firing in Pygame?

मैं एक बार में एक से अधिक गोलियां चलने से कैसे रोक सकता हूं?

पाइगेम में, जब खिलाड़ी किसी सूची में कई गोलियां जोड़ता है तो एपेंड() विधि का उपयोग करता है गोली चलाने से सभी गोलियाँ एक साथ चलने लगती हैं। इसे रोकने के लिए, एक टाइमर लागू करें जो गोलियों की गोलीबारी को दूर रखता है।

यहां आपके कोड का एक संशोधित संस्करण है जिसमें एक टाइमर शामिल है:

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()

इस संशोधित कोड में, बुलेट_डेले शॉट्स के बीच देरी को निर्धारित करता है और नेक्स्ट_बुलेट अगले स्वीकृत शॉट के समय को ट्रैक करता है। जब खिलाड़ी स्पेस दबाता है, तो हम जांचते हैं कि आखिरी शॉट के बाद पर्याप्त समय बीत चुका है या नहीं (अगली_बुलेट के आधार पर)। यदि ऐसा है, तो एक बुलेट बनाई जाती है और उसे बुलेट समूह में जोड़ दिया जाता है। यह टाइमर सुनिश्चित करता है कि एक समय में केवल एक ही गोली चलाई जा सकती है, बुलेट_डेले द्वारा निर्दिष्ट विलंब के साथ।

विज्ञप्ति वक्तव्य यह आलेख यहां पुनर्मुद्रित है: 1729463900 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए स्टडी_गोलंग@163.कॉम से संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3