0

我正在制作一个游戏来练习 mygame 并创建一个高分屏幕,但我似乎无法正确地按我想要的方式对文本进行 blit

这是高分方法

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 文件中获取高分并对其进行 blits,但是当我希望每个分数从其上方的分数向下移动约 100 像素时,它会将它们放在一行上

那么我怎样才能使它从文件中分割文本并将每个分数降低 100 像素?

谢谢你

——克里斯蒂安·卡雷加

4

2 回答 2

0

您可以为每个分数创建一个文件,然后简单地执行以下操作:

screen.blit(label1, (0, 0))
screen.blit(labe2, (0, 100))
screen.blit(labe3, (0, 100))
#etc
于 2013-06-19T03:19:19.067 回答
0

如果你的分数在一个文件中,假设看起来像这样:


得分 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))
于 2014-05-08T05:31:19.567 回答