去年四月在这个论坛上提出了这个问题。但是,唯一的答案是:“你的脚本适用于我的系统,检查并确保你有pygame模块用于你的python版本。”所以我先检查了一下然后检查了一下。 (我有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()
答案 0 :(得分: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()
答案 1 :(得分:0)
尝试在调整大小模式设置中删除颜色深度:
screen = pygame.display.set_mode(SCREEN_SIZE, RESIZABLE)
我得到的颜色深度与你的错误相同,当我删除它时它会消失。我不知道它为什么会失败,但VIDEORESIZE事件上根本没有官方文档,除了Event对象的大小,w和h字段设置为某些东西。 (现在检查这很困难,因为pygame.org现在已经关闭,据报道由于服务器RAID错误,但你可以通过Google获取信息,并查看缓存页面。)