【问题标题】:Why is the Pygame .blit() function not working? [closed]为什么 Pygame .blit() 函数不起作用? [关闭]
【发布时间】:2021-12-25 07:27:43
【问题描述】:

我想将敌人闪到屏幕上,但是 .blit() 中的 enemy() 不起作用。我尝试打印enemies 列表,它正在被附加,但它仍然没有将敌人blit 到屏幕上。我也没有收到任何错误

这是我的代码

def enemy(enemies):
    enemy = pygame.Rect(width//2, height//2, 100, 100)
    enemies.append(enemy)
    for enemy in enemies:
        window.blit(enemy_transform, enemy)
        enemy.x -= enemy_vel

def main():
    running = True
    clock = pygame.time.Clock()

    player = pygame.Rect(50, height//2 - 50, 150, 150)

    enemies = []

    while running:
        clock.tick(60)
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                running = False
                pygame.quit
                sys.exit

        keys_pressed = pygame.key.get_pressed()
        player_movement(player, keys_pressed)
        draw_window(player)
        enemy(enemies)

if __name__ == "__main__":
    main()

【问题讨论】:

  • 欢迎来到 Stack Overflow。请阅读ericlippert.com/2014/03/05/how-to-debug-small-programs 并跟踪您的程序逻辑。提示:pygame.display.update() 的用途是什么?每次通过循环,该调用在什么时候发生?具体来说:敌人是在呼叫之前还是之后被吸引?你明白为什么会导致问题吗?
  • 问题“听起来”如何并不重要(您的专业水平也不重要)。重要的是根据网站的目的向网站标准提出问题。请记住,这不是一个讨论论坛,而是一个问答资源库;当您在这里提出问题时,理想情况下不应该是“我需要帮助解决这个问题”的心态,而是“我注意到 Stack Overflow 缺少这个问答对”。最好的问题是那些帮助下一个人使用搜索引擎解决问题的问题。
  • 欢迎来到 Stack Overflow。请编辑问题,它的代码不应超过通过复制粘贴重现问题所需的最少代码,"Minimal, Reproducible, Example."

标签: python pygame pygame-surface


【解决方案1】:

您必须在应用程序循环中绘制敌人。在应用循环之前创建敌人,在应用循环中移动它们并在draw_window中绘制它们。

确保函数和变量具有不同的名称。在您的代码中,您将名称 enemy 用于函数和变量。此时使用不同的名称。例如:

def draw_window(player, enemies):
    window.blit(background, (0, 0))
    for enemy in enemies:
        window.blit(enemy_transform, enemy)
    window.blit(player_transform, player)
    pygame.display.update()

def move_enemies(enemies):
    for enemy_rect in enemies:
        enemy_rect.x -= enemy_vel
def main():
    running = True
    clock = pygame.time.Clock()

    player = pygame.Rect(50, height//2 - 50, 150, 150)

    enemies = []
    enemy_rect = pygame.Rect(width//2, height//2, 100, 100)
    enemies.append(enemy_rect)

    while running:
        clock.tick(60)
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                running = False

        keys_pressed = pygame.key.get_pressed()
        player_movement(player, keys_pressed)
        move_enemies(enemies)
        
        draw_window(player, enemies)

    pygame.quit()
    sys.exit()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-05
    • 2023-03-04
    • 2020-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多