2016-11-01 4 views
1

Ich drucke einen formatierten Text im Pygame-Fenster. Der Volltext druckt korrekt bis auf ein neues Zeilenzeichen ('\n') Ich möchte zwischen zwei Werten setzen. Die neue Zeile wird als Box angezeigt, wie das Drucken eines UNICODE-Zeichens im Nicht-UNICODE-Bereich. Wie auch immer, einen Blick:Neuer Zeilen-Charakter funktioniert nicht in formatierter Ausgabe im Pygame-Fenster

def updateScoreBoard(): 
    font=pygame.font.SysFont(None,14) 
    text=font.render('Score: %05d \n Egg Caught: %03d' %(SCORE,EGGSCAUGHT),True,pygame.Color(255,255,255)) 
    textRect=text.get_rect() 
    mainSurface.blit(text,textRect) 

, was ich als Ergebnis zu erhalten, enter image description here

die Box zwischen Nullen anzeigen und dem 'Ei'? Dann habe ich den Code mit diesem Update:

NEWLINE='\n' 
def updateScoreBoard(): 
    font=pygame.font.SysFont(None,14) 
    text=font.render('Score: %05d %s Egg Caught: %03d' %(SCORE,NEWLINE,EGGSCAUGHT),True,pygame.Color(255,255,255)) 
    textRect=text.get_rect() 
    mainSurface.blit(text,textRect) 

Noch gleiches Ergebnis. Was mache ich nun?

+0

Sie können Ihre Schriftart Arial 'font = pygame.font.SysFont ('Arial', 14) versuchen, zu ändern'. Andere, dass alles gut aussieht. – zipa

+0

gut? die 'Egg Caught'-Saite sollte in der nächsten Zeile stehen, aber stattdessen eine Box geben! Das ist nicht gut für mich. –

Antwort

1

PyGame doc: Font.render()

Der Text kann nur eine einzige Zeile sein: Zeilenumbrüche nicht gerendert werden.

+0

so ist meine einzige Option, ein anderes Schriftart-/Oberflächenobjekt zu nehmen, um die nächste Linie zu drucken. Recht? –

+0

Ja, Sie müssen 'rendern()' nächste Zeile und 'blit()' es auf 'mainSurface' - Sie können die Zeile nach unten verschieben, indem Sie' textRect.y' ändern. Wahrscheinlich sollten beide Linien die gleiche Höhe haben, so dass Sie 'textRect.y + = textRect.height + some_margin' ausprobieren können – furas

0

Eine mögliche Lösung könnte wie folgt aussehen.

def updateScoreBoard(): 
    font=pygame.font.SysFont(None,14) 
    text=font.render('Score: %05d' (SCORE),True,pygame.Color(255,255,255)) 
    xl, ytop, xr, ybottom = textRect = text.get_rect() 
    mainSurface.blit(text,textRect) 

    text=font.render('Egg Caught: %03d' (EGGSCAUGHT), True, pygame.Color(255,255,255)) 
    xl, yt, xr, yb = textRect = text.get_rect() 
    yt += (int(ybottom * 1.5) + ytop) 
    yb += (int(ybottom * 1.5) + ytop) 
    textRect = xl, yt, xr, yb 
    mainSurface.blit(text,textRect) 
Verwandte Themen