Python ';元组';对象不可调用-Pygame

Python ';元组';对象不可调用-Pygame,python,Python,我在pygame中编写游戏时再次遇到问题 在处理允许玩家射击的函数时,我经常遇到这样的错误:“tuple”对象不可调用” 在我的主程序中,“循环”子例程: play=True sprites,platforms,player1=GameClass.Game.run('') # Player 1 is defined here. display.fill(WHITE) GameClass.Game.restart(player1) display.fill(W

我在pygame中编写游戏时再次遇到问题

在处理允许玩家射击的函数时,我经常遇到这样的错误:“tuple”对象不可调用”

在我的主程序中,“循环”子例程:

play=True

    sprites,platforms,player1=GameClass.Game.run('')  # Player 1 is defined here.

    display.fill(WHITE)
    GameClass.Game.restart(player1)
    display.fill(WHITE)


    while play:
        display.fill(WHITE)
        GameClass.Game.getevent(player1)
        platforms.draw(display)
        sprites.draw(display)
        pygame.display.update()

        collision=pygame.sprite.spritecollide(player1,platforms, False)
        if collision:
            player1.updateposition(True,False)

        else:
            player1.updateposition(False,False)
如您所见,player1已定义。然后调用GameClass.Game.getevent,它将self作为参数

我将代码传递给播放器1并到达这一行:

if event.type==pygame.MOUSEBUTTONDOWN:
                if event.button==1:
                    PlayerClasses.Player.shoot(self)
由于self仍然被分配给player1,它将进入最后一个部分,即bullet类

class Bullet(pygame.sprite.Sprite):

    def __init__(self,speed,Game):

        self.speed=speed
        self.image=pygame.Surface((10,10))
        self.rect=self.image.get_rect()
        #self.x,self.y=Player.exportlocation(player1)

    def movebullet(self):
        self.rect.center((self.x+self.speed),self.y)
我得到一个错误:

(如果需要,这里还有更多)

我不知道为什么会出现这个问题

非常感谢,,
卢克

它的发生是因为
self.rect.center(…)
self.rect.center
可能是一个元组。您可能希望使用
self.rect.center=…

From(重点是我的):

Rect对象有几个虚拟属性,可用于 移动并对齐矩形:

x、 y上,左,下,右上左,下左,上右, 右下中上、中左、中下、中右 中心,中心X,中心尺寸,宽度,高度w,h

所有这些属性都可以分配给:

rect1.right=10

rect2.center=(20,30)


似乎
self.rect.center
是一个元组,而不是一个函数。在哪里定义了
self.rect.center
 File "C:\Users\Luke\Desktop\Year13CA\Base.py", line 293, in loop
    GameClass.Game.getevent(player1)
  File "C:\Users\Luke\Desktop\Year13CA\GameClass.py", line 64, in getevent
    PlayerClasses.Player.shoot(self)
  File "C:\Users\Luke\Desktop\Year13CA\PlayerClasses.py", line 77, in shoot
    Bullet.movebullet(self)
  File "C:\Users\Luke\Desktop\Year13CA\PlayerClasses.py", line 96, in movebullet
    self.rect.center((self.x+self.speed),self.y)
TypeError: 'tuple' object is not callable