我有一个python编程的问题,当我试图写一个游戏(由书: Coding game 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()发布于 2019-08-15 23:33:20
您正在使用Python库pgzero (通过导入pgzrun间接实现)。
我已经将游戏代码重构为多个文件(导入到主文件中),并且也观察到了同样奇怪的情况
NameError:未定义名称“Actor”
错误消息。
Actor类似乎是“私有的”,但可以用下面这行简单的代码导入:
from pgzero.builtins import Actor, animate, keyboard有关背景信息,请参阅:
https://github.com/lordmauve/pgzero/issues/61
2019年8月18日更新:无法导入screen对象,因为它是在运行时作为全局变量创建的(object = Screen类的实例),并且无法完成IDE支持的代码。请参阅源代码:https://github.com/lordmauve/pgzero/blob/master/pgzero/game.py (esp.def reinit_screen部分)
发布于 2019-06-01 20:34:51
Pygame站点上的这个页面将帮助您从集成开发环境中运行它:https://pygame-zero.readthedocs.io/en/stable/ide-mode.html
从本质上讲,你必须有这两行代码:
import pgzrun
...
...
pgzrun.go()但是在编码过程中,IDE仍然会抱怨像screen和Actor这样的对象和函数是未定义的。挺烦人的。据我所知,没有办法修复它,你只能忽略这些抱怨,点击Debug > Run。如果您没有错误,程序将会编译并运行。
关于……
import pgzrun
actor = pgzrun.Actor("dot")或
from pgzrun import *
dot=Actor("dot")这些都不能帮助像Spyder或Visual Studio这样的集成开发环境识别像screen和Actor这样的对象和函数
pgzrun看起来不像一个普通的python库。Pygame依赖于使用pgzrun从命令行运行python脚本:
pgzrun mygame.py发布于 2019-03-31 14:33:46
如果您的pip包或同一目录中有Actor类,请定义它或从package中导入它
https://stackoverflow.com/questions/55438239
复制相似问题