Перенос текста в pygame

Я делаю игру, чтобы попрактиковаться в своей игре, и я создаю экран рекордов, но я не могу правильно скопировать текст, как я хочу.

вот метод рекордов

def high_screen(self):
    screen.blit(background,(0,0))
    myfont = pygame.font.SysFont("impact", 20)
    scorefile = open('highscores.txt', 'r')
    highscores = scorefile.read()
    label = myfont.render((highscores), 1, (0,0,0))
    screen.blit(label, (0, 0))

    self.back = pygame.image.load('resources/screen/back.png')
    self.back_r = self.back.get_bounding_rect()
    self.back_r.x,self.back_r.y = (100,600)
    screen.blit(self.back,(100, 600))
    screen.blit(self.player,(self.mouse_pos))
    if self.player_r.colliderect(self.back_r)and pygame.mouse.get_pressed()[0]:
        self.state = 1

это получает рекорды из файла .txt и переносит их, но он переносит их в одну строку, когда я хочу, чтобы каждый результат был примерно на 100 пикселей ниже, чем тот, что над ним.

Итак, как я могу сделать так, чтобы он разделял текст из файла и уменьшал каждый счет на 100 пикселей вниз?

Спасибо

-Кристиан Кареага


person Serial    schedule 19.06.2013    source источник


Ответы (2)


Вы можете создать файл для каждой оценки, а затем просто сделать что-то вроде:

screen.blit(label1, (0, 0))
screen.blit(labe2, (0, 100))
screen.blit(labe3, (0, 100))
#etc
person Kevin Klute    schedule 19.06.2013
comment
это правда, но я думаю, что хочу 10 баллов, но я не хочу иметь 10 файлов - person Serial; 19.06.2013
comment
Ну, я не силен в хранении данных на Python, я думаю, вы могли бы использовать полку и вместо 10 файлов просто иметь 10 ключей. - person Kevin Klute; 20.06.2013

если ваша оценка находится в файле, который, предположим, выглядит так:


счет1 - 10

счет2 - 23

счет3 - 34


затем вы можете использовать это, чтобы разделить партитуры на разные тексты

scorelist = [text.split('\n') for text in open('score.txt','r')]
##when you read the file from python you will get this string : score1 - 10\nscore2 - 23\nscore3 - 34

затем, чтобы прикрепить это к поверхности, используйте этот код:

for i in enumerate(scorelist,1):
    surface.blit(i[1],(100,100+i[0]*100))
person ahk    schedule 08.05.2014