gpt4 book ai didi

python-3.x - 类型错误:draw() 缺少 1 个必需的位置参数: 'surface'

转载 作者:行者123 更新时间:2023-12-05 05:25:06 27 4
gpt4 key购买 nike

使用此代码时出现错误。据我所知,表面确实填充了所有位置参数。

我从 block 类创建播放器,然后传入参数来创建播放器。 (颜色、宽度和高度)创建播放器后,我将其添加到 all_sprites 列表并使用 player.rect.x 和 player.rect.y 将 block 定位在屏幕上。

最后我只是将 all_sprites_list 绘制到屏幕上。

但是当这样做时我得到这个错误:

TypeError: draw() missing 1 required positional argument: 'surface' 

有人能告诉我我做错了什么吗?

class Block(pygame.sprite.Sprite):
def __init__(self, color, width, height):
super().__init__()
self.image = pygame.Surface([width, height])
self.image.fill(color)
self.rect = self.image.get_rect()
self.width = width

screen_width = 700
screen_height = 500
size = (screen_width, screen_height)
screen = pygame.display.set_mode(size)

# Sprites lists
all_sprites_list = pygame.sprite.Group

# Create the player
block_width = 30
block_height = 15
player = Block(BLUE, block_width, block_height)
# Set the initial position for the player in the center of the screen
player.rect.x = screen_width/2 - block_width/2
player.rect.y = screen_height/2 - block_height/2
# Add the player to all_sprites_list
all_sprites_list.add(player)

# -------- Main Program Loop -----------
while not done:
# --- Main event loop
for event in pygame.event.get():
if event.type == pygame.QUIT:
done = True

screen.fill(WHITE)
all_sprites_list.draw(screen)

pygame.display.flip()

最佳答案

pygame.sprite.Group是一个类,根据文档定位here .

Group(*sprites) -> Group

您需要做的是在您调用 pygame.sprite.Group 的地方添加括号,并将该组中的所有 Sprite 添加到括号内,如下所示:

all_sprites_list = pygame.sprite.Group(player,enemy,etc...)

至少你需要在 Group 后面加上括号,这样解释器就不会把它当成一个对象,并正确地调用函数。

关于python-3.x - 类型错误:draw() 缺少 1 个必需的位置参数: 'surface',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32294479/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com