【问题标题】:Pygame Platformer- Randomly Spawning EnemiesPygame Platformer - 随机生成敌人
【发布时间】:2019-08-22 16:00:51
【问题描述】:

我目前在尝试在我的平台游戏中随机生成敌人时遇到问题。我有一个敌人类class Enemy(pygame.sprite.Sprite):,它有一个__init__move(self) 函数。目前我已经单独定义了敌人的每个实例:

 enemy1 = Enemy(210,515,"Enemy.png")
 enemy2 = Enemy(705,515,"Enemy.png")
 enemy3 = Enemy(1505,515,"Enemy.png")

在主游戏循环中,我将每个实例附加到一个组中:

enemy_list = pygame.sprite.Group()
        enemy_list.add(enemy1)
        enemy_list.add(enemy2)
        enemy_list.add(enemy3)

但是我宁愿敌人在随机位置随机生成,所以我想我可以做这样的检查:

if random.randrange(0,100) < 1:
                spawnEnemy = Enemy(400, 515, "Enemy.png")

我的问题是我现在不知道如何将随机 eney 附加到enemy_list。有什么想法吗?

【问题讨论】:

    标签: python random pygame spawning


    【解决方案1】:

    如果我正确,坐标将被传递到class Enemy(pygame.sprite.Sprite): 以进行实例化

    在这种情况下,随机定位可以通过以下方式完成:

    enemy4 = Enemy(random.randrange(100,1000),random.randrange(100,1000),"Enemy.png")
    enemy_list.add(enemy4)
    

    如果您无法硬编码敌人标识符,请尝试直接添加到敌人组列表而不进行分配:

    enemy_list.add(Enemy(random.randrange(100,1000),random.randrange(100,1000),"Enemy.png"))
    

    【讨论】:

    • 谢谢,我在if random.randrange(0,100) &lt;1: 代码下方添加了enemy_list.add(Enemy(random.randrange(100,1000),random.randrange(100,1000),"Enemy.png")),它确实随机生成,但它只显示一秒钟,然后在其他地方重新生成。我想它只是修改同一个实例而不是每次都创建一个新实例,因此单个实​​例只是被随机重绘。不知道如何解决这个问题,但它的进展。有什么想法吗?
    • 如果不清楚:我希望它不断添加新实例,以便随着时间的推移我可以让它随着玩家分数的增加而产生越来越多的敌人,而不是拥有一定数量的敌人.
    • 我实际上不太清楚为什么实例化一个新的Enemy() 会覆盖前一个,如果你不将它分配给一个特定的变量,我对模块本身不太熟悉。希望你能解决这个问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-16
    相关资源
    最近更新 更多