Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Melaksanakan Tembakan Peluru dengan Bar Ruang dalam Pygame?

Bagaimana untuk Melaksanakan Tembakan Peluru dengan Bar Ruang dalam Pygame?

Patricia Arquette
Patricia Arquetteasal
2024-11-02 22:33:30476semak imbas

How to Implement Bullet Firing with the Spacebar in Pygame?

Menembak Peluru dengan Bar Ruang

Panduan ini menangani pelaksanaan tembakan peluru dengan bar ruang dalam program Pygame.

Pendekatan

Pengendalian Bullet

Simpan kedudukan peluru dalam senarai (bullet_list). Apabila peluru dilepaskan, tambahkan kedudukan permulaannya ([start_x, start_y]) pada senarai. Kemas kini kedudukan peluru dalam senarai. Alih keluar sebarang peluru yang meninggalkan skrin.

Interaksi Pemain dan Peluru

Kemas kini dan lukis objek secara berterusan dalam gelung aplikasi utama. Kelas Bullet harus mempunyai kaedah untuk memulakan, mengemas kini dan melukis peluru.

Definisi Kelas

Tentukan kelas untuk Bullet dan 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>

Gelung Aplikasi Utama

Mulakan permainan, tentukan objek dan masukkan gelung utama. Kendalikan peristiwa, kemas kini objek, kosongkan paparan, lukis pemandangan dan kemas kini paparan dalam setiap bingkai:

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

Dengan pendekatan ini, anda boleh menembak peluru dengan berkesan menggunakan bar ruang sambil mengekalkan kedua-dua pemain dan peluru pada skrin.

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Tembakan Peluru dengan Bar Ruang dalam Pygame?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn