按照蟒蛇书(Python编程从入门到实践)第12章12.3.1-12.3.3中代码编写,运行的话会出现一个空的Pygame窗口,但是我这个运行后报错,希望编程届的各位大拿可以帮忙看看是什么问题。谢谢。
import sys
import pygame
from settings import Settings
class AlienInvasion:
"""管理游戏资源和行为的类"""
def __init__(self):
"""初始化游戏并创建游戏资源。"""
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")
def run_game(self):
"""开始游戏的主循环"""
while True:
# 监视键盘和鼠标事件。
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
# 每次循环时都重绘屏幕。
self.screen.fill(self.settings.bg_color)
# 让最近绘制的屏幕可见
pygame.display.flip()
if __name__ == '__main__':
# 创建游戏实例并运行游戏。
ai = AlienInvasion()
ai.run_game()
class Settings:
"""存储游戏《外星人入侵》中所有设置的类"""
def __init__(self):
"""初始化游戏的设置。"""
# 屏幕设置
self.screen_width = 1200
self.screen_height = 800
self.bg_color = (230, 230, 230)
运行结果及详细报错内容
/Users/messi/PycharmProjects/alien_invasion/venv/bin/python /Users/messi/PycharmProjects/alien_invasion/alien_invasion.py
pygame 2.3.0 (SDL 2.24.2, Python 3.11.2)
Hello from the pygame community. https://www.pygame.org/contribute.html
Traceback (most recent call last):
File "/Users/messi/PycharmProjects/alien_invasion/alien_invasion.py", line 7, in <module>
class AlienInvasion:
File "/Users/messi/PycharmProjects/alien_invasion/alien_invasion.py", line 34, in AlienInvasion
ai = AlienInvasion()
^^^^^^^^^^^^^
NameError: name 'AlienInvasion' is not defined