Ошибка в вопросе вызвана переменным экрана выделяется на целое число вместо pygame.Surface() object.Perhaps вы случайно переписали переменную где-нибудь?
Из того, что я могу сделать из того, что вы делаете, также кажется, что вы заявляете, что положение blit - это полный прямоугольник вместо координаты.
когда вы делаете:
screen.blit(sight.image,sight.rect)
Что программа видит это:
screen.blit(sight.image,(sight.rect.x,sight.rect.y,sight.rect.width,sight.rect.height))
Я предполагаю, что вы не намерены делать это. Помните, что прямой объект состоит из положения, ширины и высоты.
Чтобы исправить код, положить (sight.rect.x, sight.rect.y), где местоположение идет вместо так:
screen.blit(sight.image,(sight.rect.x,sight.rect.y))
в .x и .y соответствуют левому верхнему углу прямоугольника в углов в плоскости пикселя (x, y). Затем в этом месте появится изображение визирования.
Если вы хотите прочитать на объекте pygame.Rect, я выложу ссылку на это документация here
Я надеюсь, что это помогает. :)
Это означает, что ваша переменная экрана является int. Возможно, вы перезаписали его – muddyfish
Переменная экрана: screen = pygame.display.set_mode ((600, 400), 0, 32) – AnonymousPerson
Я имею в виду позже в программе - распечатайте ее перед ошибкой – muddyfish