【问题标题】:Blitting text in pygamepygame中的文本
【发布时间】:2013-06-15 10:20:54
【问题描述】:

我正在制作一个游戏来练习 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 像素时,它会将它们 blits 在一行上

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

谢谢

-克里斯蒂安·卡雷加

【问题讨论】:

    标签: python string text pygame blit


    【解决方案1】:

    您可以为每个乐谱制作一个文件,然后简单地执行以下操作:

    screen.blit(label1, (0, 0))
    screen.blit(labe2, (0, 100))
    screen.blit(labe3, (0, 100))
    #etc
    

    【讨论】:

    • 没错,但我想我想要 10 个分数,但我不想有 10 个文件
    • 我不擅长 python 数据存储,我认为你可以使用搁置,而不是 10 个文件只有 10 个键。
    【解决方案2】:

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


    分数 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))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-20
      • 2014-06-17
      • 1970-01-01
      • 2013-03-22
      • 2023-03-11
      相关资源
      最近更新 更多