微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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):
        # [...]

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。