0

这个确切的问题是去年四月在这个论坛上提出的。但是,唯一的答案是:“您的脚本在我的系统上运行,检查并确保您拥有适用于您的 python 版本的 pygame 模块。” 所以我先检查了这个,然后检查了。(我有适用于 Python 2.7 的 Python 2.7 和 Pygame 版本 1.9.1。)

所以不是这样,但以下代码会产生与其他人报告的相同的错误:

This application has requested the runtime to terminate it in an unusual way. Please contact the application's support team for more info.

我希望原来的海报能说他们做了什么来修复它,因为我很难过。请注意,我在尝试运行它的机器上没有管理员权限。这可能是问题吗?

脚本如下。(这直接取自《使用 Python 和 Pygame 开始游戏开发》一书。)它会一直运行到您尝试调整窗口大小的那一刻。

background_image_filename = 'sushiplate.jpg'

import pygame
from pygame.locals import *
from sys import exit

SCREEN_SIZE = (640, 480)

pygame.init()
screen = pygame.display.set_mode(SCREEN_SIZE, RESIZABLE, 32)

background = pygame.image.load(background_image_filename).convert()

while True:

    event = pygame.event.wait()
    if event.type == QUIT:
        exit()
    if event.type == VIDEORESIZE:
        SCREEN_SIZE = event.size
        screen = pygame.display.set_mode(SCREEN_SIZE, RESIZABLE, 32)
        pygame.display.set_caption("Window resized to "+str(event.size))

    screen_width, screen_height = SCREEN_SIZE
    for y in range(0, screen_height, background.get_height()):
        for x in range(0, screen_width, background.get_width()):
            screen.blit(background, (x, y))

    pygame.display.update()
4

2 回答 2

1

警告,您正在为每个触发的事件绘制。你反而想要:

while True:

    for event in pygame.event.get():

        if event.type == QUIT:
            exit()
        elif event.type == VIDEORESIZE:
            # ...
        elif event.type == KEYDOWN:
            # ...
    # draw.
    pygame.display.update()

下一个代码没有意义:你想做什么?

screen_width, screen_height = SCREEN_SIZE
for y in range(0, screen_height, background.get_height()):
    for x in range(0, screen_width, background.get_width()):
        screen.blit(background, (x, y))

pygame.display.update()
于 2013-09-17T17:46:28.210 回答
0

尝试在调整大小模式设置中删除颜色深度:

screen = pygame.display.set_mode(SCREEN_SIZE, RESIZABLE)

我得到了和你一样的错误,留下了颜色深度,当我删除它时它就消失了。我不知道它为什么会失败,但是根本没有关于 VIDEORESIZE 事件的官方文档,除了 Event 对象的大小、w 和 h 字段设置为某些东西。(现在检查这个很困难,因为 pygame.org 现在已经关闭,据报道是由于服务器 RAID 错误,但你可以谷歌搜索信息,并查看缓存页面。)

于 2013-09-16T23:17:24.133 回答