首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在崇高文本3中运行游戏时分割故障11

在崇高文本3中运行游戏时分割故障11
EN

Stack Overflow用户
提问于 2014-06-09 01:05:53
回答 2查看 446关注 0票数 0

我正在使用Python3.4.0,我有MacOSX10.9.2。下面的代码以崇高文本的形式保存为sublimePygame。

代码语言:javascript
复制
import pygame, sys 
from pygame.locals import * 

pygame.init() 

#set up the window
DISPLAYSURF = pygame.display.set_mode((400, 300)) 
pygame.display.set_caption('Drawing') 

# set up the colors 
BLACK = ( 0, 0, 0) 
WHITE = (255, 255, 255) 
RED = (255, 0, 0) 
GREEN = ( 0, 255, 0) 
BLUE = ( 0, 0, 255)

# Draw on surface object
DISPLAYSURF.fill(WHITE)
pygame.draw.polygon(DISPLAYSURF, GREEN, ((146, 0), (291, 106), (236, 277), (56, 277), (0,        106))) 
pygame.draw.line(DISPLAYSURF, BLUE, (60, 60), (120, 60), 4) 
pygame.draw.line(DISPLAYSURF, BLUE, (120, 60), (60, 120)) 
pygame.draw.line(DISPLAYSURF, BLUE, (60, 120), (120, 120), 4) 
pygame.draw.circle(DISPLAYSURF, BLUE, (300, 50), 20, 0) 
pygame.draw.ellipse(DISPLAYSURF, RED, (300, 250, 40, 80), 1) 
pygame.draw.rect(DISPLAYSURF, RED, (200, 150, 100, 50)) 


pixObj = pygame.PixelArray(DISPLAYSURF) 
pixObj[480, 380] = BLACK 
pixObj[482, 382] = BLACK 
pixObj[48, 384] = BLACK 
pixObj[486, 386] = BLACK 
pixObj[488, 388] = BLACK 
del pixObj 

while True: # main game loop 
    for event in pygame.event.get(): 
        if event.type == QUIT: 
            sys.exit() 
            pygame.display.update()

我在我的终端中运行代码,python窗口打开一秒钟,然后关闭。

我在终端机上发现了这个错误。

代码语言:javascript
复制
Traceback (most recent call last):
  File "sublimePygame", line 29, in <module>
    pixObj[480, 380] = BLACK 
IndexError: invalid index
Segmentation fault: 11

我查看了玩偶文档,我的代码看上去还不错。我在googled中搜索了错误,而分段错误11似乎是python中的一个bug,但我读到它是用Python3.4.0修复的。

有人知道出了什么问题吗?

提前感谢!

编辑: Marius在我的程序中发现了这个bug,但是当我运行它时,它打开了一个空白的Python窗口,而不是它应该打开的顶部。有人知道为什么会这样吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-09 01:09:39

我可以在您的代码中看到一个明确的错误,但我不确定这是否会导致分段错误,这是一个更严重的错误。

代码中的错误是创建了一个400x300窗口:

代码语言:javascript
复制
DISPLAYSURF = pygame.display.set_mode((400, 300))

然后尝试为超出该窗口界限的像素设置颜色值。

代码语言:javascript
复制
pixObj[480, 380] = BLACK

同样,这可能不会导致分段错误。

票数 0
EN

Stack Overflow用户

发布于 2016-05-04 04:48:03

您的空白python窗口问题如下:

代码语言:javascript
复制
while True: # main game loop 
    for event in pygame.event.get(): 
        if event.type == QUIT: 
            sys.exit() 
            pygame.display.update()

只有在激活退出时才会执行pygame.display.update()。您需要删除一些缩进,以便它位于for循环之外,但在while循环中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24112445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档