Python 当我尝试调整窗口大小时,pygame崩溃
去年4月在这个论坛上提出了这个问题。但是,唯一的答案是:“您的脚本在我的系统上运行,请检查并确保您拥有适用于您的python版本的pygame模块。”因此,我首先检查了这一点,然后它被签出。(我有Python2.7和Pygame 1.9.1版的Python2.7版本。) 所以不是这样,但是下面的代码产生了与另一个人报告的相同的错误:Python 当我尝试调整窗口大小时,pygame崩溃,python,python-2.7,pygame,Python,Python 2.7,Pygame,去年4月在这个论坛上提出了这个问题。但是,唯一的答案是:“您的脚本在我的系统上运行,请检查并确保您拥有适用于您的python版本的pygame模块。”因此,我首先检查了这一点,然后它被签出。(我有Python2.7和Pygame 1.9.1版的Python2.7版本。) 所以不是这样,但是下面的代码产生了与另一个人报告的相同的错误: This application has requested the runtime to terminate it in an unusual way. Plea
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()
尝试删除“调整大小模式”设置上的颜色深度:
screen = pygame.display.set_mode(SCREEN_SIZE, RESIZABLE)
我得到了与你相同的错误,颜色深度保留在,当我删除它时,它消失了。我不知道它为什么会失败,但除了事件对象的大小、w和h字段设置为某个值之外,根本没有关于VIDEORESIZE事件的正式文档。(现在很难检查这一点,因为pygame.org现在已关闭,据说是由于服务器RAID错误,但您可以通过谷歌搜索信息并查看缓存页面。)警告,您正在为每个触发的事件绘制。相反,您希望:
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()
一件可能有效的事情是问另一个问题的操作员,谁知道,他可能会回答。他用平铺背景覆盖屏幕,但这是多余的光点,多次绘制相同的像素。我想他是想用普通的平铺布利特。