Ошибка типа: аргумент 1 должен быть pygame.Surface, а не builtin_function_or_method - PullRequest
0 голосов
/ 07 июня 2018

Полный код здесь: https://pastebin.com/Ne3dCpzp

Dice0 = pygame.image.load("dice_0.png").convert
Dice1 = pygame.image.load("dice_1.png").convert
Dice2 = pygame.image.load("dice_2.png").convert
Dice3 = pygame.image.load("dice_3.png").convert
Dice4 = pygame.image.load("dice_4.png").convert

dice0img = Dice0
dice1img = Dice1
dice2img = Dice2
dice3img = Dice3
dice4img = Dice4

...

    if dice == 0 :
        screen.blit(dice0img, (80, 320))
    if dice == 1 :
        screen.blit(dice1img, (80, 320))
    if dice == 2 :
        screen.blit(dice2img, (80, 320))
    if dice == 3 :
        screen.blit(dice3img, (80, 320))
    if dice == 4 :
        screen.blit(dice4img, (80, 320))

В настоящее время я получаю сообщение об ошибке:

Traceback (most recent call last):
  File "C:\Users\Ed\Documents\thonk\game.py", line 90, in <module>
    screen.blit(dice4img, (80, 320))
TypeError: argument 1 must be pygame.Surface, not builtin_function_or_method

Почему это происходит?

1 Ответ

0 голосов
/ 07 июня 2018

Как говорится в сообщении об ошибке, вы должны передать Surface в функцию blit.

Если вы посмотрите на эти строки своего кода:

Dice4 = pygame.image.load("dice_4.png").convert
...
dice4img = Dice4

, вы можетеобратите внимание, что Dice4 / dice4img являются ссылками на функцию convert.Опять же, это также то, что сообщается вам в сообщении об ошибке ( not builtin_function_or_method ).

Вы должны фактически вызвать функцию convert, чтобы она возвратила Surface и присвоила ее Dice4 переменная.

TL; DR:

Линии, которые выглядят как

Dice4 = pygame.image.load("dice_4.png").convert

, должны выглядеть следующим образом

Dice4 = pygame.image.load("dice_4.png").convert()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...