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