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

从清单中呼叫课程

如何解决从清单中呼叫课程

我有3个看起来很像这样的课程。只是不同的名称

class Crosspipe(BasePipe):
    def __init__(self,position):
        BasePipe.__init__(self,position)
        self.current_pos_X = 0
        self.current_pos_y = 0
        self.flow_rect = Rect(0,settings.FLOW_WIDTH,0)
        self.flow_rect.left = (settings.TUBE_SIZE / 2) - (settings.FLOW_WIDTH / 2)
        
    def update(self):
        BasePipe.update(self)
        if self.current_pos_y < settings.TUBE_SIZE:
            self.current_pos_y += 1
        self.flow_rect.bottom = self.current_pos_y
        pygame.draw.rect(self.image,settings.FLOW_COLOR,self.flow_rect,1)

每个类都是游戏的一个障碍。这些块一次随机出现在列表4中。

pipes = (StraightPipe,BentPipe,Crosspipe)
coming_pipes = []
done = 0
while done != 4:
    coming_pipes.append(random.choice(pipes).__name__)
    done += 1

这将使列表看起来像这样:

['BentPipe','Crosspipe','BentPipe','StraightPipe']

列表中的4个块需要显示在屏幕上,但是要在屏幕上绘制它们,我必须能够使用placed.add(coming_pipes[0]((-2,0)))从列表中调用它们,但由于它是字符串列表,给出placed.add("BentPipe"((-2,0))),无法调用

那么,我怎么能从列表中调用一个类,或者在没有字符串的情况下将这些类添加到列表中呢?

我并没有太多的编码知识。

解决方法

不要将类别的名称放在列表中;自己上课。

pipes = (StraightPipe,BentPipe,CrossPipe)
coming_pipes = []
done = 0
while done != 4:
    coming_pipes.append(random.choice(pipes))
    done += 1

或更简单地

coming_pipes = random.choices(pipes,k=4)

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