首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >游戏非法指令4?

游戏非法指令4?
EN

Stack Overflow用户
提问于 2019-01-21 17:25:34
回答 1查看 655关注 0票数 2

我正在做一个游戏,我的朋友在试图运行下面的代码时遇到了以下问题。

代码语言:javascript
复制
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。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-21 18:54:23

根据pygame.org文档

您总是可以手动初始化各个模块,但是pygame.init()是一种方便的方法来启动所有的模块。

这告诉我们,甚至没有必要调用init(),这就解释了为什么即使您的代码丢失了,它仍然可以工作。代码示例中唯一需要初始化的是display模块,但出于某种奇怪的原因,display模块在调用pygame.display.set_mode((640, 480))时会初始化自己。您可以在下面的代码示例中看到这种情况:

代码语言:javascript
复制
import pygame
print("Before: " + str(pygame.display.get_init()))
screen = pygame.display.set_mode((640, 480))
print("After : " + str(pygame.display.get_init()))

你可以在这里看到所有的游戏模块索引。并检查它们是否需要初始化。

现在,你的朋友得到非法指令的原因是:4很可能是由于在这个线程中解释的问题。我建议按照答案中的说明(并阅读发生这种情况的原因),尝试卸载游戏,然后再用

代码语言:javascript
复制
$ pip install --no-binary pygame pygame

这很有可能解决他的问题。希望这能回答你的问题。

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

https://stackoverflow.com/questions/54295000

复制
相关文章

相似问题

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