为啥我的 PyGame 应用程序根本没有运行?

Posted

技术标签:

【中文标题】为啥我的 PyGame 应用程序根本没有运行?【英文标题】:Why is my PyGame application not running at all?为什么我的 PyGame 应用程序根本没有运行? 【发布时间】:2021-03-23 15:39:09 【问题描述】:

我有一个简单的 Pygame 程序:

#!/usr/bin/env python

import pygame
from pygame.locals import *

pygame.init()

win = pygame.display.set_mode((400,400))
pygame.display.set_caption("My first game")

但是每次我尝试运行它时,我都会得到这个:

pygame 2.0.0 (SDL 2.0.12, python 3.8.3)
Hello from the pygame community. https://www.pygame.org/contribute.html

然后什么都没有发生。 为什么我不能运行这个程序?

【问题讨论】:

【参考方案1】:

您的应用程序运行良好。但是,您还没有实现应用程序循环:

import pygame
from pygame.locals import *

pygame.init()

win = pygame.display.set_mode((400,400))
pygame.display.set_caption("My first game")
clock = pygame.time.Clock()

run = True
while run:

    # handle events
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False

    # update game objects
    # [...]

    # clear display
    win.fill((0, 0, 0))

    # draw game objects
    # [...]

    # update display
    pygame.display.flip()

    # limit frames per second
    clock.tick(60) 

pygame.quit()

典型的 PyGame 应用程序循环必须:

通过调用pygame.event.pump()pygame.event.get() 来处理事件。 根据输入事件和时间(分别为帧)更新游戏状态和对象位置 清空整个显示或绘制背景 绘制整个场景(blit所有对象) 通过调用pygame.display.update()pygame.display.flip() 更新显示 使用pygame.time.Clock.tick 限制每秒帧数以限制 CPU 使用率

repl.it/@Rabbid76/PyGame-MinimalApplicationLoop 另见Event and application loop

【讨论】:

以上是关于为啥我的 PyGame 应用程序根本没有运行?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 pygame 应用程序循环不能正常工作? [复制]

为啥说模块 pygame 没有 init 成员?

为啥我的 onBindViewHolder () 根本没有运行,即使我的所有其他回收器视图方法都运行了?

为啥我的python用pygame做图片移动会留下轨迹?

为啥 PyGame 在延迟或睡眠之前没有在窗口中绘制?

为啥我的应用小部件没有在 API 3 或 4 中更新?