我正在开发一个类似于这个的Python程序。无论如何,我希望用户能够修改他们自己的程序,但我需要帮助来理解这是如何实现的。我已经查看了源代码,但不清楚这是在哪里发生的。如果有人能指引我到相关部分,那将非常有帮助。我知道这些程序不会被沙箱化,但这目前不是我担心的。如果你能给我任何指引,那将非常棒!谢谢!
回答:
“机器人程序”只是存储为纯文本文件。
在editor.py中有一个通用的文本编辑器。当你在特定视图中打开一个机器人时,例如在qt4view.py中的Qt4视图,它只是实例化一个文本编辑器并将机器人的文件传递给它。同样,机器人的文件是一个Python脚本这一事实并不重要;它只是作为文本文件进行编辑。
与此同时,战斗代码会将文本编辑器作为文本文件打开的相同机器人文件作为Python代码打开。你可以在game.py中看到这段代码:它只是使用subprocess
模块运行Python,并将机器人文件作为参数传递。