如果s.rect.collidepoint(pos)"那么sprite_list中s的含义是什么?含义?

时间:2017-07-31 09:15:14

标签: python python-3.x events pygame

我正在阅读关于pygame的代码.Down是pygame的一个小游戏的一部分。我无法理解" clicked_smileys = [s s sprite_list中的s,如果s.rect.collidepoint(pos)]"代码。它是最后的第八行。谁能理解? 我认为它刚才有错误,但是IDE可以运行它。它是python3的代码。

count_smileys = 0
count_popped = 0
class Smiley(pygame.sprite.Sprite):
    pos =(0,0)
    xvel = 1
    yvel = 1
    scale = 100
    def __init__(self, pos, xvel, yvel):
        pygame.sprite.Sprite.__init__(self)
        self.image = pic
        self.scale = random.randrange(10,100)
        self.image = pygame.transform.scale(self.image, (self.scale,self.scale))
        self.rect = self.image.get_rect()
        self.pos = pos
        self.rect.x = pos[0] - self.scale/2
        self.rect.y = pos[1] - self.scale/2
        self.xvel = xvel
        self.yvel = yvel
    def update(self):
        self.rect.x += self.xvel
        self.rect.y += self.yvel
        if self.rect.x <= 0 or self.rect.x > screen.get_width()- self.scale:
            self.xvel = -self.xvel
        if self.rect.y <= 0 or self.rect.y > screen.get_height()- self.scale:
            self.yvel = -self.yvel
while keep_going:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            keep_going = False
        if event.type == pygame.MOUSEBUTTONDOWN:
            if pygame.mouse.get_pressed()[0]:  # Left mouse button, draw
                mousedown = True
            elif pygame.mouse.get_pressed()[2]: # Right mouse button, pop
                pos = pygame.mouse.get_pos()
                clicked_smileys = [s for s in sprite_list if s.rect.collidepoint(pos)]
                sprite_list.remove(clicked_smileys)
        if len(clicked_smileys)> 0:
            pop.play()
            count_popped += len(clicked_smileys)
        if event.type == pygame.MOUSEBUTTONUP:
                mousedown = False
    screen.fill(BLACK)

1 个答案:

答案 0 :(得分:1)

subscription-transport-ws是<{p}}的list comprehension形式

clicked_smileys = [s for s in sprite_list if s.rect.collidepoint(pos)]