我会尽量简明扼要。
我正在关注以下链接中的 tcod Rouguelike 教程:
http://rogueliketutorials.com/tutorials/tcod/
我正在使用 PyCharm 社区版,但我认为这并不重要。一切进展顺利,直到第 4 部分结束,我们为玩家实施了 FOV。当我尝试使用以下代码(在教程中给出)运行主引擎时:
def recompute_fov(fov_map, x, y, radius=1, light_walls=True, algorithm=0):
libtcod.map_compute_fov(fov_map, x, y, radius, light_walls, algorithm)
编译器吐出以下错误:
File "C:\Users\drago\anaconda3\envs\Roguelike\lib\site-packages\tcod\libtcodpy.py", line 3320, in map_compute_fov
m.compute_fov(x, y, radius, light_walls, algo)
AttributeError: 'NoneType' object has no attribute 'compute_fov'
Process finished with exit code 1
我至少知道它是在谈论 tcod 包本身。但我不明白。谢天谢地,PyCharm 给了我一些见解……
PyCharm 对 libtcod.map_compute_fov 的洞察
所以我听从了它的建议,将 libtcod.map_compute_fov 更改为 libtcod.map.compute_fov
它给了我另一个错误:
File "C:\Users\drago\PycharmProjects\Roguelike\map_objects\fov_functions.py", line 13, in recompute_fov
libtcod.map.compute_fov(fov_map, x, y, radius, light_walls, algorithm)
TypeError: compute_fov() takes from 2 to 5 positional arguments but 6 were given
Process finished with exit code 1
因此,PyCharm 再次能够告诉我这个新函数,以及它如何使用不同的值。它没有使用 FOV_map,而是使用称为 pov 的东西,并且该 pov 需要一个包含 2 个值的数组。它也与透明度有关,在这一点上,为了我想要完成的目的,它超出了我的想象。
我仍在学习 Python,因此本教程。我知道数组是什么。但是我不知道如何使我现有的代码与这个新功能/模块一起工作(我把两者混在一起了),因为旧的已经贬值了。
任何帮助,将不胜感激。
我也在使用 Python 3.8。