pygame TypeError:参数必须是矩形样式对象

问题描述

我正在用一个简单的游戏尝试 python,但遇到这个错误
代码如下:

import pygame
from pygame.sprite import Sprite

class Bullet(Sprite):
    """A class to manage bullets fired by the ship."""
    def __init__(self,ai_game):
        super().__init__()
        self.screen = ai_game.screen
        self.settings = ai_game.settings
        self.color = self.settings.bullet_color
    
        # Create a bullet rect at (0,0) and then set correct position.
        # self.rect = pygame.Rect(0,self.settings.bullet_width,#     self.settings.bullet_height)
        self.rect = pygame.Rect(left=0,top=0,width=self.settings.bullet_width,height=self.settings.bullet_height)
        # ...

然后错误说:

文件“my_codes/alien_invasion/bullet.py”,第 15 行,init
self.rect = pygame.Rect(left=0,
类型错误:参数必须是矩形样式对象

如果我更改如下行,它可以正常工作:

self.rect = pygame.Rect(0,self.settings.bullet_height)

我不明白为什么这里只有位置参数传递有效。
如果您能帮助我,我将不胜感激。

解决方法

查看 pygame.Rect 的文档:

[...] 可以通过左、上、宽和高值的组合创建一个 Rect。也可以从已经是 Rect 或具有名为“rect”的属性的 Python 对象创建 Rects。

查看 pygame.Rect 的构造函数的实现(来自 pygame_cffi):

class Rect(object):
    # [...]

    def __init__(self,*args):
        # [...]

因此,您不能使用关键字参数指定参数。