這個問題涉及實現按下空白鍵時發射子彈的功能,同時在螢幕上保留玩家角色。
提問者的代碼最初存在一個問題,即射擊時玩家角色消失。這是因為投籃和球員移動被分成不同的循環。為了解決這個問題,我們需要將它們組合成一個主循環,同時更新兩種行為。
另一個問題是當子彈到達螢幕頂部時無法打破射擊循環。原始程式碼使用了無限持續的 while 迴圈。為了解決這個問題,我們需要使用一個帶有條件的 while 迴圈來檢查子彈是否已經到達頂部。
這是代碼的修訂版本:
<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>
以上是如何讓玩家在遊戲中射擊子彈,同時保持玩家可見?的詳細內容。更多資訊請關注PHP中文網其他相關文章!