首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >游戏字体属性错误

游戏字体属性错误
EN

Stack Overflow用户
提问于 2018-07-29 23:10:22
回答 1查看 889关注 0票数 1
代码语言:javascript
运行
复制
import sys, pygame as pg, random




class Game:
    def __init__(self):
         #initialize game window, etc
         pg.init()
         pg.font.init()
         pg.mixer.init()
         self.screen = pg.display.set_mode((800, 600))
         pg.display.set_caption('myFirstGame')
         self.running = True
         self.font_name = pg.font.match_font('calibri')


    def new(self):
        #resets the game
        self.score = 0
        self.run()

    def run(self):
        #game loop
        self.playing = True
        while self.playing:
            self.draw()


    def draw(self):
         #game loop draw
         self.screen.fill(0, 0, 0)

         self.all_sprites.draw(self.screen)
         self.draw_text(str(self.score), 22, white, 800 / 2, 20)
         #after drawing everything, flip the display
         pg.display.flip()



    def draw_text(self, text, size, color, x, y):
        font = pg.font.Font(self.font_name, size)
        text_surface = font.render(text, True, color)
        text_rect = text_surface.get_rect()
        text_rect.midtop = (x, y)
        self.screen.blit(text_surface, text_rect)

 g = Game()
 while g.running:
     g.new()
     g.show_go_screen()

 pg.quit()

所以我遵循了一个教程并得到了这个错误..。

AttributeError:模块“pygame.font”没有属性“match_font”

我觉得这个错误与游戏的安装有关。我通过MSVC运行python,并通过View >其他Windows > Python环境安装Pygame。我似乎无法使字体发挥作用。我正在学习一个教程,试图从中学习,甚至复制,粘贴对本教程的创建者有效的代码,并获得相同的错误。谁能给我指明正确的方向?

顺便说一句。不是整个代码..。我删掉了很多与字体无关的东西。宽度、屏幕等变量都是包含整个代码的有效变量。FONT_NAME被定义为settings.py中的“杯状”,它是用整个代码导入的。

EN

回答 1

Stack Overflow用户

发布于 2018-07-30 06:54:29

下面的教程看起来不太好,有几件事:

  • 如果你做了pg.font.init() (文档),就不需要做文档
  • 如果要使用Sys字体(如杯标),则不需要执行self.font_name = pg.font.match_font('calibri'),然后执行pg.font.Font(self.font_name, size)。只需使用SysFont
  • self.all_sprites在哪里定义?您在draw中使用它,但我看不出初始化在哪里。
  • 如果new()重置了游戏,那么在游戏循环中调用它就没有什么意义了。此外,如果new()重置游戏,为什么它调用绘图函数?
  • mixer代表声音。如果你不想播放任何声音,就没有必要初始化它。此外,如果您不希望声音延迟,您必须在pg.init()之前初始化它,并使用mixer.pre_init()mixer.init()
  • show_go_screen方法也丢失了:/
  • fill方法不接收(0,0,0),它应该是(0,0,0)黑色。
  • draw_text方法中,"white“不是颜色,而是变量。您应该使用(255,255,255)代替。

毕竟,我所犯的错误来自于填充函数,而不是字体。

在修复它之后,我从前面指出的缺少的变量/方法中得到了一个错误。

在修复了所有这些之后。我没有任何错误。

如果你会西班牙语,我有一个回购与基本的游戏https://github.com/Patataman/PythonBasic/tree/master/frameworks/pygame。如果不是,好吧,也许你可以找出xD

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51585285

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档