我正在做一个游戏,我的朋友在试图运行下面的代码时遇到了以下问题。
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption('winter gam')
pygame.display.update()
running = True
clock = pygame.time.Clock()
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
running = False
clock.tick(60)
screen.fill((0, 0, 0))
pygame.draw.rect(screen, (255, 0, 0), [10, 10, 100, 100])
pygame.display.update()
pygame.quit()我在我的linux发行版上运行了这段代码,但是运行OSX10.13.6的朋友在试图运行它时遇到了一个错误,他说:“非法指令: 4”。
唯一提供任何解决方案的线程是这个线程:非法指示:4在MacOS高中
当我们将"pygame.init()“行改为" pygame.font.init()”时,代码在他的机器上和我的机器上都工作得很好,这很奇怪,因为pygame.font.init()只应该初始化pygame.font?
有人知道为什么这样做和/或有更好的解决这个问题的办法吗?
Python版本为3.6,游戏版本为1.9.4。
发布于 2019-01-21 18:54:23
您总是可以手动初始化各个模块,但是pygame.init()是一种方便的方法来启动所有的模块。
这告诉我们,甚至没有必要调用init(),这就解释了为什么即使您的代码丢失了,它仍然可以工作。代码示例中唯一需要初始化的是display模块,但出于某种奇怪的原因,display模块在调用pygame.display.set_mode((640, 480))时会初始化自己。您可以在下面的代码示例中看到这种情况:
import pygame
print("Before: " + str(pygame.display.get_init()))
screen = pygame.display.set_mode((640, 480))
print("After : " + str(pygame.display.get_init()))你可以在这里看到所有的游戏模块索引。并检查它们是否需要初始化。
现在,你的朋友得到非法指令的原因是:4很可能是由于在这个线程中解释的问题。我建议按照答案中的说明(并阅读发生这种情况的原因),尝试卸载游戏,然后再用
$ pip install --no-binary pygame pygame这很有可能解决他的问题。希望这能回答你的问题。
https://stackoverflow.com/questions/54295000
复制相似问题