2017-10-12 7 views
1

ここで何が間違っていますか? プレーヤーのスコアに合わせてラベルのテキストを更新したいと思います。 私は他の例を見て、更新メソッドを追加しましたが、テキストは変わりません。パイゲームでテキストを更新する

class Label(): 
def __init__(self, txt, location, size=(160,30), bg=WHITE, fg=BLACK, font_name="Segoe Print", font_size=12): 
    self.bg = bg 
    self.fg = fg 
    self.size = size 

    self.font = pygame.font.Font(font_name, font_size) 
    self.txt = txt 
    self.txt_surf = self.font.render(self.txt, 1, self.fg) 
    self.txt_rect = self.txt_surf.get_rect(center=[s//2 for s in self.size]) 

    self.surface = pygame.surface.Surface(size) 
    self.rect = self.surface.get_rect(topleft=location) 



def draw(self): 
    self.surface.fill(self.bg) 
    self.surface.blit(self.txt_surf, self.txt_rect) 
    screen.blit(self.surface, self.rect) 


def update(self): 
    self.txt_surf = self.font.render(self.txt, 1, self.fg) 

    self.surface.blit(self.txt_surf, self.txt_rect) 

答えて

0

あなたは、単にあなたのラベルオブジェクトの.txt属性に(最初の文字列に変換)現在のスコアを割り当て、そのupdateメソッドを呼び出すことができます。

# In the main while loop. 
score += 1 
label.txt = str(score) 
label.update() 

私もちょうどdraw方法で表面をブリットとupdate方法でそれを更新します。

def draw(self, screen): 
    screen.blit(self.surface, self.rect) 

def update(self): 
    self.surface.fill(self.bg) 
    self.txt_surf = self.font.render(self.txt, True, self.fg) 
    self.surface.blit(self.txt_surf, self.txt_rect) 
+0

DERP私は、自己の中にプレーヤーのスコアを入れていたという(pygame.text.renderを使用しているとき、私はfogotクラスで作業するとき、私はまだ初心者だwhileループ)にLabel.txtを更新するのを忘れ。 text.renderメソッドには直接入力しないでください。 –

+0

ありがとう –

関連する問題