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

我正在pygame中制作游戏,并且希望它可以多次产生东西

如何解决我正在pygame中制作游戏,并且希望它可以多次产生东西

我正在pygame中制作一个游戏,我希望它可以在不同的地方多次生成事物,但是使用我的代码,它可以多次生成事物,但它不会保留在生成的位置。我知道这是因为它处于while循环中而发生了。请尽可能用简单的语言解释。这是代码

def spawn_food():
    food = Food(random.randint(3,797),random.randint(3,797))
    food.draw()


player1 = Player(250,200)
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()
    keys = pygame.key.get_pressed()
    if keys[pygame.K_RIGHT]:
        player1.x += 1
    if keys[pygame.K_LEFT]:
        player1.x -= 1
    if keys[pygame.K_UP]:
        player1.y -= 1
    if keys[pygame.K_DOWN]:
        player1.y += 1
    screen.fill((255,255,255))
    player1.draw()
    pygame.display.update()

解决方法

spawn_food()需要返回一个新的Food对象:

def spawn_food():
    return Food(random.randint(3,797),random.randint(3,797))

您必须将Food的实例添加到列表中:

food_list = []
for i in range(5):
    food_list.append(spawn_food())

分别

food_list = [spawn_food() for _ in range(5)]

在应用程序循环内的循环中绘制food_list的元素:

while True:
    # [...]

    screen.fill((255,255,255))

    for food in food_list:
        food.draw()

    player1.draw()
    pygame.display.update()

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