2

我是 python 新手,我正在尝试用 pygame 做一些事情,但不知道我该怎么做..

def addRect(x, y, width, height, color, surface):
    rect = pygame.Rect(x, y, width, height)
    pygame.draw.rect(surface, color, rect)
    pygame.display.flip()

那是为了创建矩形,但我的问题是我应该如何访问我创建的 ractangles?我正在尝试类似的东西。

r1 = addRect(20, 40, 200, 200, (61, 61, 61), screen)

但是当我尝试使用它移动它时

r1.move(10,10)

我收到一个错误

r1.move(10,10) AttributeError: 'NoneType' 对象没有属性 'move'

我应该如何访问它?谢谢-

4

2 回答 2

2

我不太了解 PyGame 但你可以修改 addRect -

def addRect(x, y, width, height, color, surface):
    rect = pygame.Rect(x, y, width, height)
    pygame.draw.rect(surface, color, rect)
    pygame.display.flip()
    return rect # Added this line. Returns the rect object for future use.

然后你也可以制作矩形并使用方法 -

rect1 = addRect(20, 40, 200, 200, (61, 61, 61), screen)
rect1.move(10,10)

那应该工作

于 2013-07-21T14:52:29.957 回答
2

Python 函数的默认返回值为None. 因为,您的函数中没有 return 语句,所以它返回None没有属性move()

来自Python 文档

事实上,即使是没有 return 语句的函数也确实会返回一个值,尽管这很无聊。该值称为 None (它是一个内置名称)。

>>> def testFunc(num):
        num += 2

>>> print testFunc(4)
None

您需要添加一条return语句来返回rect变量。

def addRect(x, y, width, height, color, surface):
    rect = pygame.Rect(x, y, width, height)
    pygame.draw.rect(surface, color, rect)
    pygame.display.flip()
    return rect
于 2013-07-21T14:51:27.837 回答