问题描述
我正在用一个简单的游戏尝试 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):
# [...]
因此,您不能使用关键字参数指定参数。