Est-il possible d'afficher du texte sur une fenêtre pygame à l'aide de python?
Je dois afficher de nombreuses informations en direct qui sont mises à jour et je préfère ne pas créer d'image pour chaque personnage dont j'ai besoin.
Puis-je transférer du texte à l'écran?
Oui. Il est possible de dessiner du texte en pygame:
# initialize font; must be called after 'pygame.init()' to avoid 'Font not Initialized' error
myfont = pygame.font.SysFont("monospace", 15)
# render text
label = myfont.render("Some text!", 1, (255,255,0))
screen.blit(label, (100, 100))
Vous pouvez utiliser vos propres polices personnalisées en définissant le chemin d'accès à l'aide de pygame.font.Font
pygame.font.Font(filename, size): return Font
exemple:
pygame.font.init()
font_path = "./fonts/newfont.ttf"
font_size = 32
fontObj = pygame.font.Font(font_path, font_size)
Rendez ensuite la police à l'aide de fontObj.render et blit sur une surface comme dans la réponse de veiset ci-dessus. :)
J'ai un code dans mon jeu qui affiche le score en direct. C'est dans une fonction pour un accès rapide.
def texts(score):
font=pygame.font.Font(None,30)
scoretext=font.render("Score:"+str(score), 1,(255,255,255))
screen.blit(scoretext, (500, 457))
et je l'appelle en utilisant ceci dans ma boucle while:
texts(score)
J'ai écrit un wrapper, qui mettra en cache les surfaces de texte, ne restitue que lorsqu'il est sale. googlecode/ninmonkey/nin.text/demo /