我正在使用Python3.4.0,我有MacOSX10.9.2。下面的代码以崇高文本的形式保存为sublimePygame。
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窗口打开一秒钟,然后关闭。
我在终端机上发现了这个错误。
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窗口,而不是它应该打开的顶部。有人知道为什么会这样吗?
发布于 2014-06-09 01:09:39
我可以在您的代码中看到一个明确的错误,但我不确定这是否会导致分段错误,这是一个更严重的错误。
代码中的错误是创建了一个400x300窗口:
DISPLAYSURF = pygame.display.set_mode((400, 300))然后尝试为超出该窗口界限的像素设置颜色值。
pixObj[480, 380] = BLACK同样,这可能不会导致分段错误。
发布于 2016-05-04 04:48:03
您的空白python窗口问题如下:
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循环中。
https://stackoverflow.com/questions/24112445
复制相似问题