我在 python 编程方面遇到问题,当我尝试编写游戏时(本书介绍:Coding Games Python DK 3),它说: 未定义名称“Actor”。
这是我的代码:
import pgzrun
from random import randint
WIDTH = 400
HEIGHT = 400
dots = []
lines = []
next_dot = 0
for dot in range(0, 10):
actor = Actor("dot")
actor.pos = randint(20, WIDTH -20), randint (20, HEIGHT - 20)
dots.append(actor)
def draw():
screen.fill("black")
number = 1
for dot in dots:
screen.draw.text(str(number), (dot.pos[0], dot.pos[1] + 12))
dot.draw()
number = number + 1
for line in lines:
screen.draw.line(line[0], line[1], (100, 0, 0))
pgzrun.go()
最佳答案
您正在使用 Python 库 pgzero
(间接通过导入 pgzrun
)。
我已经将我的游戏代码重构到多个文件中(导入到主文件中)并且也确实观察到了同样的奇怪现象
NameError: name 'Actor' is not defined
错误信息。
Actor
类似乎是“私有(private)的”,但可以用这个简单的代码行导入:
from pgzero.builtins import Actor, animate, keyboard
背景见:
https://github.com/lordmauve/pgzero/issues/61
2019 年 8 月 18 日更新:无法导入屏幕对象,因为它是在运行时作为全局变量创建的(对象 = Screen
类的实例)和 IDE-那么支持的代码完成是不可能的。查看源代码:https://github.com/lordmauve/pgzero/blob/master/pgzero/game.py (特别是 def reinit_screen
部分)
关于python - 名称 'Actor' 未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55438239/