如何在 pygame 中为角色扮演游戏制作文本框/状态框?

App*_*ker 4 python text pygame

我需要为我的角色扮演游戏创建一个文本框/消息框/状态框等。我已经创建了一个文本框类,但它似乎不起作用。它会传输表面但不显示任何文本。

代码:

class TextBox(pygame.sprite.Sprite):
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)
        self.initFont()
        self.initImage()
        self.initGroup()
        self.setText(['a','b'])

    def initFont(self):
        pygame.font.init()
        self.font = pygame.font.Font(None,3)

    def initImage(self):
        self.image = pygame.Surface((200,80))
        self.image.fill((255,255,255))
        self.rect = self.image.get_rect()
        self.rect.center = (0,0)        

    def setText(self,text):
        tmp = pygame.display.get_surface()
        x_pos = self.rect.left+5
        y_pos = self.rect.top+5

        for t in text:
            x = self.font.render(t,False,(0,0,0))
            tmp.blit(x,(x_pos,y_pos))
            x_pos += 10

            if (x_pos > self.image.get_width()-5):
                x_pos = self.rect.left+5
                y_pos += 10

    def initGroup(self):
        self.group = pygame.sprite.GroupSingle()
        self.group.add(self)
Run Code Online (Sandbox Code Playgroud)

App*_*ker 5

嗯,抱歉。没关系。我自己发现了问题。我写 :

 self.rect.center = (0,0)
Run Code Online (Sandbox Code Playgroud)

它应该在哪里

 self.rect.top = 0 ; self.rect.left = 0
Run Code Online (Sandbox Code Playgroud)

不管怎么说,还是要谢谢你。:D

  • 使用:`self.rect.topleft = (0, 0)` (6认同)