pygame 中的“无效 rect 分配”错误

问题描述 投票:0回答:0

我正在关注这个视频,它在这里说:

self.rect = self.image.get_rect(topleft = pos)

回溯错误: Traceback error

到目前为止文件中的完整代码:

import pygame
from settings import *
from support import import_folder
from sprites import Generic
from random import randint, choice

class Drop(Generic):
    def __init__(self, surf, pos, moving, groups, z):

        super().__init__(pos, surf, groups, z)
        self.lifetime = randint(400, 500)
        self.start_time = pygame.time.get_ticks()

        self.moving = moving
        if self.moving:
            self.pos = pygame.math.Vector2(self.rect.topleft)
            self.direction = pygame.math.Vector2(-2, 4)
            self.speed = randint(200, 250)
    
    def update(self, dt):
        if self.moving:
            self.pos += self.direction * self.speed * dt
            self.rect.topleft = (round(self.pos.x), round(self.pos.y))

        if pygame.time.get_ticks() - self.start_time >= self.lifetime:
            self.kill()

class Rain:
    def __init__(self, all_sprites):
        self.all_sprites = all_sprites
        self.rain_drops = import_folder('pydew-valley/graphics/rain/drops/')
        self.rain_floor = import_folder('pydew-valley/graphics/rain/floor/')
        self.floor_w, self.floor_h = pygame.image.load('pydew-valley/graphics/world/ground.png').get_size()

    def create_floor(self):
        Drop(
            choice(self.rain_floor),
            (randint(0, self.floor_w), randint(0, self.floor_h)),
            False,
            self.all_sprites,
            LAYERS['rain floor'])

    def create_drops(self):
        Drop(
            choice(self.rain_drops),
            (randint(0, self.floor_w), (0, self.floor_h)),
            True,
            self.all_sprites,
            LAYERS['rain drops'])

    def update(self):
        self.create_floor()
        self.create_drops()

如果必须查看更多文件,我也可以提供。

我已经审查了这个和所有其他相关文件。不过,我似乎找不到我要找的东西。

有人可以帮忙吗?谢谢。

python pygame rectangles
© www.soinside.com 2019 - 2024. All rights reserved.