#python #pygame #typeerror
#python #pygame #ошибка типа
Вопрос:
Хорошо, итак, я работаю с pygame и пытаюсь создать систему, в которой, когда символ попадает в область экрана, появляется большой текст с надписью «Вы разбились». но когда я пробую код и врезаюсь в стену, ничего не происходит, и я получаю сообщение об ошибке в оболочке
error: Traceback (most recent call last):
File "D:pygame test.py", line 88, in <module>
game_loop()
File "D:pygame test.py", line 84, in game_loop
crash()
File "D:pygame test.py", line 44, in crash
message_display('You Crashed')
File "D:pygame test.py", line 34, in message_display
gameDisplay.blit(TextSurface)
TypeError: argument 1 must be pygame.Surface, not pygame.Rect.
ребята, вы знаете, что происходит и как я мог бы исправить эту проблему?
код:
def message_display (text):
LargeText = pygame.font.Font('freesansbold.ttf', 115)
TextRect = text_objects(text, LargeText)
TextSurface = text_objects(text, LargeText)
TextRect.center = ((display_width/2), (display_height/2))
pygame.display.flip()
gameDisplay.blit(TextSurface)
очень признателен.
Комментарии:
1. что такое
text_objects
функция? Ошибка, похоже, подразумевает, что она возвращает apygame.rect
, когда blit требуетpygame.Surface
2. Я не совсем уверен, что
text_objects
нужно быть честным с вами. но я думаю, что это может быть просто попытка упростить ситуацию или что-то в этом роде
Ответ №1:
Предполагаю, что вы работаете с примером на этом сайте.
Итак, ваша text_objects
функция выглядит так:
def text_objects(text, font):
textSurface = font.render(text, True, black)
return textSurface, textSurface.get_rect()
Затем вам нужно изменить свою message_display
функцию, чтобы обрабатывать оба возврата из text_objects()
:
def message_display (text):
LargeText = pygame.font.Font('freesansbold.ttf', 115)
TextSurface, TextRect = text_objects(text, LargeText)
TextRect.center = ((display_width/2), (display_height/2))
gameDisplay.blit(TextSurface)
# this next line should probably only be called in your main loop
pygame.display.flip()