2011-06-19 2 views
3

Je dois créer un TextBox/MessageBox/StatusBox etc. pour mon RPG. J'ai fait une classe de zone de texte mais cela ne semble pas fonctionner. Il blesse la surface mais n'affiche aucun texte.Comment faire un TextBox/Status Box dans pygame pour un RPG?

CODE:

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) 
+0

Si vous trouvez la réponse à votre propre question, vous devriez l'afficher comme une réponse, de sorte que vous pouvez marquer la réponse à la question. Je pense que vous devrez attendre 24 heures à partir du moment où vous avez posé la question pour le faire. – mgiuca

+0

Désolé à ce sujet. Je voulais le faire mais j'ai dû attendre 24 heures, donc j'ai fait un montage à la place. C'est fait maintenant. – ApprenticeHacker

+0

Cool. Aussi, vous pouvez cocher votre propre question. ;) – mgiuca

Répondre

3

Umm Désolé. Ça ne fait rien. J'ai trouvé le problème moi-même. J'ai écrit:

self.rect.center = (0,0) 

où il aurait dû être

self.rect.top = 0 ; self.rect.left = 0 

Merci Quoi qu'il en soit. : D

+6

Utilisez: 'self.rect.topleft = (0, 0)' – ninMonkey

Questions connexes