首页 > 解决方案 > Python速成课程外星人入侵问题

问题描述

这是关于“Python Crash Course 2nd Edition”一书的。

在完成第 12 章中的“将船绘制到屏幕上”部分后,我得到了一个黑屏,而不是灰屏,当我运行 alien_invasion.py 时,我没有看到船出现。我已尝试为该步骤运行 Matthes 的可下载资源文件,但仍然出现黑屏。我正在从 Sublime 文本运行这些 .py 文件,但尝试使用终端运行它们(我收到缩进错误)和 python IDLE 运行它们(给我一个 pygame 模块未找到错误,尽管我知道 pygame 已安装并找到由崇高)。

以下是游戏代码,如果您有船图像,则不应在屏幕底部显示灰色背景和船:

import sys

import pygame

from settings import Settings
from ship import Ship

class AlienInvasion:
    """Overall class to manage game assets and behavior."""

    def __init__(self):

        """Initialize the game, and create game resources."""
        pygame.init()
        self.settings = Settings()

        self.screen = pygame.display.set_mode(
            (self.settings.screen_width, self.settings.screen_height))

        pygame.display.set_caption("Alien Invasion")

        self.ship = Ship(self)

    def run_game(self):
        """Start the main loop for the game."""
        while True:
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    sys.exit()

            # Redraw the screen during each pass through the loop.
            self.screen.fill(self.settings.bg_color)
            self.ship.blitme()

            # Make the most recently drawn screen visible.
            pygame.display.flip()

if __name__ == '__main__':
    # Make a game instance, and run the game.
    ai = AlienInvasion()
    ai.run_game()

我使用的是 Mac OS 版本 10.14.6。

这个问题的任何解决方案,或者我应该编写/运行这些游戏模块的更好的实践或程序?

任何拥有已成功安装 pygame 和/或已经让 alien_invasion 工作的 Mac 的人?

对我的 reddit 帖子的一个回复说他们在 Mac OS 上遇到了类似的问题,但是当他们在 linux 上尝试时它运行良好......

除了在单独的分区上安装 linux 或其他什么东西,Mac 用户还有其他选择吗?

谢谢你的帮助!

标签: pythonpygame

解决方案


在 Eric Matthes 的 github 上找到了解决方案。Uff da,pygame 在 python 3.8.2 上还不稳定......我需要安装 pygame 的开发版本才能在 python 3.8.2 上运行。

来自 Eric 的 github:

Pygame 的稳定版本尚未更新为与 Python 3.8 一起使用。但是,最近有一个适用于 Python 3.8 的开发版本。要安装它,请运行以下命令:

$ python -m pip install pygame==2.0.0.dev6

您应该使用与在系统上运行 Python 终端会话相同的命令,可能是 python、python3、py、python3.8 或其他。

如果您在 macOS 上运行 Pygame 时遇到任何问题,这个版本的 Pygame 也应该能解决这些问题。


推荐阅读