Soalan ini melibatkan pelaksanaan keupayaan untuk menembak peluru apabila bar ruang ditekan, sambil mengekalkan watak pemain pada skrin.
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.
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>
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!