0
我正在嘗試爲pygame中的角色繪製健康狀況欄。我收到一個錯誤,表示名稱'draw_shield_bar'未定義。我嘗試過player.draw_shield_bar,但仍然不起作用。有人可以幫助符號。下面我列出了調用函數的代碼,然後包括定義該函數的播放器類。幫助將不勝感激。如何在pygame中顯示角色的健康狀況
def draw(self):
# Game Loop - draw
whitehouse = pg.image.load("whiteHouseBG.png")
self.screen.blit(whitehouse,(0,0))
self.all_sprites.draw(self.screen)
self.draw_text(str(self.score), 22, WHITE, WIDTH/2, 15)
draw_shield_bar(self.screen, 50, 50, player.shield)
# *after* drawing everything, flip the display
pg.display.flip()
class Player(pg.sprite.Sprite):
def __init__(self, game):
pg.sprite.Sprite.__init__(self)
self.game = game
self.walking = False
self.jumping = False
self.current_frame = 0
self.last_update = 0
self.load_images()
#me:girl standing
self.image = self.girl_standing[0]
self.rect = self.image.get_rect()
self.rect.center = (WIDTH/2, HEIGHT/2)
self.pos = vec(WIDTH/2, HEIGHT*3/4)
self.vel = vec(0, 0)
self.acc = vec(0, 0)
self.shield = 100
self.screen = pg.display.set_mode((WIDTH, HEIGHT))
self.clock = pg.time.Clock()
def draw_shield_bar(surf, x, y, pct):
if pct < 0:
pct = 0
BAR_LENGTH = 200
BAR_HEIGHT = 20
fill = (pct/100 * BAR_LENGTH)
outline_rect = pg.Rect(x, y, BAR_LENGTH, BAR_HEIGHT)
fill_rect = pg.Rect(x, y, fill, BAR_HEIGHT)
pg.draw.rect(surf, GREEN, fill_rect)
pg.draw.rect(surf, WHITE, outline_rect, 2)
添加自我時,我得到一個錯誤,說NameError:name'player'未定義。 –
然後玩家不是類Player的實例。你需要在使用它之前初始化/初始化玩家,然後它會起作用。我不確定draw()方法是哪個類的成員,但在該類或方法中,您需要執行玩家初始化。 – JacobIRR
它應該是'self.player.draw_shield_bar(self.screen,50,50)',因爲玩家是「遊戲」類的屬性(傳遞盾牌是不必要的)。我只知道,因爲我可以訪問完整的項目。 @MattMacy你真的需要學習如何創建[mcve](http://stackoverflow.com/help/mcve)。 – skrx