首页 > 解决方案 > 通电与列表一起生成,但不会重生

问题描述

我正在制作一款驾驶游戏,并且一直在研究生成的道具。我在汽车类(传入流量)中创建了一个系统,它将产生一个随机变量,如果它落在正确数量的数字之间,它将附加一个加电和一个加电产生。但是要知道如果另一辆车经过并且打印(嘿,它发生了)并且什么都不会产生。任何帮助表示赞赏

这是通电类。

class powerups(pygame.sprite.Sprite):
    def __init__(self):
        self.x_pos = -20
        self.KC = pygame.image.load('kyle coin3.png')
        self.rect = self.KC.get_rect(topleft= (self.x_pos, 0))
        self.random = int
        self.roadleft = 150
        self.roadright = 300
        self.fg = True
        self.rect.x = random.randint(self.roadleft, self.roadright)

    def draw(self, win):
        win.blit(self.KC, self.rect.topleft)
    def move(self):
        self.rect.y += 5
    def collisioncheck (self, anotherobject):
        if self.rect.colliderect(anotherobject):
            print("A collsion with a powerup has happend ")
            self.rect.x = 600
            self.grassdamage = 0
            player.damage1 =  False
            player.damage2 = False
            player.damage3= False
            player.damage4= False
            player.damage5 = False
            player.damage6 = False
            player.damage7 = False
            player.damage8 = False

这里是加电的地方。

 if self.random > 5:
                print(' hey it happened')
                new_powerup = powerups()
                powerup_list.append(new_powerup)
            else:
                self.random = 10

这是调用通电的地方。

    for new_powerup in powerup_list:
        powerup.draw(win)
        powerup.move()
        powerup.collisioncheck(player.rect)

标签: pythonpython-3.xpygame

解决方案


循环变量的名称与您在循环中使用的变量的名称不同。在for-loop 语句中使用了 name new_powerup,但在循环中使用了 name powerup。更改循环变量的名称:

for powerupin powerup_list:
    powerup.draw(win)
    powerup.move()
    powerup.collisioncheck(player.rect)

推荐阅读