Ошибка атрибута шрифта pygame

1
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'

Я чувствую, что ошибка связана с установкой pygame. Я запускаю python через MSVC и устанавливаю Pygame через View> Other Windows> Python Environments.. Я не могу заставить шрифты работать. Я следую учебнику, пытаясь извлечь из него уроки, и даже скопировал код, который работал для создателя учебника, и получил ту же ошибку. Может кто-то указать мне верное направление?

BTW... его не полный код.. я вырезал много вещей, которые не имеют отношения к шрифту.. переменные, такие как ширина, экран и т.д., Являются допустимыми переменными со всем кодом. FONT_NAME определяется как "calibri" в settings.py, который импортируется с полным кодом.

  • 0
    Я получаю другую ошибку (после добавления отсутствующих переменных) pygame.error: font not initialized . Pygame не инициализируется, потому что вы забыли здесь скобки pg.init() . Проверьте, если это исправит вашу ошибку. Если это все еще не работает, вам нужно опубликовать минимальный, полный и проверяемый пример .
  • 0
    его там на весь мой код .. я просто пропустил это случайно в посте .. позвольте мне отредактировать, чтобы отразить это, чтобы избежать путаницы .. та же ошибка сохраняется для меня в MSVC
Показать ещё 3 комментария
Теги:
pygame

1 ответ

1

Учебник, за которым вы следите, выглядит не очень хорошо, несколько вещей:

  • Вам не нужно делать pg.font.init() если вы выполняете pg.init() (docs)
  • Если вы собираетесь использовать Sysfont (например, calibri), вам не нужно делать self.font_name = pg.font.match_font('calibri') а затем pg.font.Font(self.font_name, size). Просто используйте SysFont
  • Где определяется self.all_sprites? Вы используете его в draw но я не вижу, где инициализируется.
  • Если new() сбрасывает игру, это не имеет смысла называть ее в игровом цикле. Кроме того, если new() сбрасывает игру, почему она вызывает функции draw?
  • mixer для звуков. Если вы не собираетесь воспроизводить звук, нет необходимости его инициализировать. Кроме того, если вам не нужна звуковая задержка, вы должны инициализировать ее перед pg.init() и использовать mixer.pre_init() и mixer.init()
  • show_go_screen отсутствует метод show_go_screen :/
  • Метод fill не принимает (0,0,0), он должен быть ((0,0,0)) для черного.
  • В методе draw_text "белый" не является цветом, это переменная. (255,255,255) этого вы должны использовать (255,255,255).

После всего этого: Ошибка, которую я имею, - это функция заполнения, а не шрифт.

После его исправления у меня есть ошибка из тех недостающих переменных/методов, которые я указал ранее.

После исправления всего этого. У меня нет никаких ошибок.

Если вы знаете испанский язык, у меня есть репо с основами pygame https://github.com/Patataman/PythonBasic/tree/master/frameworks/pygame. Если нет, ну, может быть, вы можете выяснить xD

  • 0
    учебник хорош .. я вынул много вещей и изменил много вещей, чтобы сделать его максимально минималистичным с акцентом на самой ошибке. Там нет звуков, ДА .. 0,0,0 - моя ошибка и т. Д. В конце концов, я недостаточно хорошо объясняю, в чем заключается моя проблема. все, чего не хватает, есть во всем моем коде. я просто пытался взять что-то там, было мало общего со шрифтом .. я потерпел неудачу.
  • 0
    Ааааааа, что сильно изменит это xD. Я забыл упомянуть, но я тестировал его с Pygame 1.9.4, и у меня не было никаких проблем после исправления этих проблем ... Возможно, проблема в другом месте в вашем коде
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню