Pygame не понимает символ переноса строки \n
Сделал скрипт для pygame, чтобы строка переносилась, если количество символов в строке делится по модулю на end (максимальное количество символов на строку)
def print_text(message, x, y, end=0, font_color=(255, 255, 255), font_type='media/FiraSans-Italic.ttf', font_size=30):
pygame.font.init()
if end > 1:
words = []
for i in message:
words.append(i)
if len(words) % end == 0:
words.append("\n")
message = "".join(words)
print(message)
font_type = pygame.font.Font(font_type, font_size)
text = font_type.render(message, True, font_color)
screen.blit(text, (x, y))
но на выходе получаю вместо переноса строки только этот символ - ⍰, на месте вставляемого "\n"
Ответы (2 шт):
Автор решения: Антон
→ Ссылка
решил вопрос, изменив функцию print_text()
def print_text(message, x, y, end=0, font_color=(255, 255, 255), font_type='media/FiraSans-Italic.ttf', font_size=30):
pygame.font.init()
font_type = pygame.font.Font(font_type, font_size)
text = font_type.render(message, True, font_color)
if end > 1:
words = []
for i in message:
words.append(i)
if len(words) % end == 0:
words.append('-')
message = "".join(words)
list_words = message.split('-')
list_length = len(list_words)
for i in range(0, list_length):
j = i + 1
y_i = y * j
list_text = font_type.render(list_words[i], True, font_color)
screen.blit(list_text, (x, y_i))
else:
screen.blit(text, (x, y))
Автор решения: Артем Батанин
→ Ссылка
def text(x, y, color, size, text, w):
a = {}
n = int(((w - x)/size)/0.45)
k = int((len(text)//n))
font = pg.font.Font(None, size)
for i in range(0, k + 1):
f = str()
if i == 0:
for m in range(0, len(text)):
if m < n:
f += text[m]
else:
for m in range(n * i, len(text) - (k * i)):
if m < (n*(i + 1)):
f += text[m]
text1 = font.render(f, True, color)
sc.blit(text1, (x, y))
y += (0.5 * size)
pg.display.update()