Bagaimana untuk Membuat Pemain Menembak Peluru dalam Permainan Sambil Memastikan Pemain Kelihatan?

Linda Hamilton
Lepaskan: 2024-11-01 11:46:02
asal
619 orang telah melayarinya

How to Make a Player Shoot Bullets in a Game While Keeping the Player Visible?

Menembak Peluru dengan Bar Ruang

Soalan ini melibatkan pelaksanaan keupayaan untuk menembak peluru apabila bar ruang ditekan, sambil mengekalkan watak pemain pada skrin.

Masalah dan Penyelesaian

Kod penanya pada mulanya mengalami masalah di mana watak pemain hilang semasa menembak. Ini kerana gerakan menembak dan pemain dipisahkan kepada gelung yang berbeza. Untuk menangani perkara ini, kita perlu menggabungkannya menjadi satu gelung utama di mana kedua-dua gelagat dikemas kini secara serentak.

Isu lain ialah ketidakupayaan untuk memecahkan gelung penangkapan apabila peluru mencapai bahagian atas skrin. Kod asal menggunakan gelung sementara yang berterusan tanpa had. Untuk membetulkannya, kita perlu menggunakan gelung sementara dengan syarat yang menyemak sama ada peluru telah mencapai bahagian atas.

Penjelasan Kod

Berikut ialah versi kod yang disemak semula:

<code class="python">import pygame, os

# Boilerplate setup omitted for brevity

class Player:
    def __init__(self, x, y, height, width):
        ...

    def draw(self):
        ...

    def move_left(self):
        ...

    def move_right(self):
        ...


class Bullet:
    def __init__(self, x, y):
        ...

    def update(self):
        ...

    def draw(self):
        ...


# Lists of bullets
bullets = []

# Initialize player
p = Player(600, 500, 50, 30)

# Main game loop
run = True
while run:
    clock.tick(100)
    
    # 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()
        # Update position and remove bullet if it goes off-screen
        if b.y < 0:
            bullets.remove(b)

    # Update frame
    d.fill((98, 98, 98))
    for b in bullets:
        b.draw()
    p.draw()
    win.update()</code>
Salin selepas log masuk

Perubahan Utama:

  • Logik menembak dan pergerakan pemain kini digabungkan menjadi satu gelung permainan utama.
  • Fungsi kemas kini bullet kini menyemak sama ada peluru telah hilang luar skrin dan keluarkannya dengan sewajarnya.
  • Gelung utama sentiasa mengemas kini dan menarik pemain serta peluru, memastikan kedua-duanya hadir pada skrin.

Atas ialah kandungan terperinci Bagaimana untuk Membuat Pemain Menembak Peluru dalam Permainan Sambil Memastikan Pemain Kelihatan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan