Roguelike开发障碍! libtcod.map_compute_fov贬值了?
Roguelike Development Roadblock! libtcod.map_compute_fov depreciated?
我会尽量做到既简短又透彻。
我正在关注下面的 tcod Rouguelike 教程 link:
http://rogueliketutorials.com/tutorials/tcod/
我正在使用 PyCharm Community Edition,但我认为这并不重要。一切进展顺利,直到第 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's insight on 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,因此教程。我知道数组是什么。但是我不知道如何让我现有的代码与这个新的 function/module 一起工作(我把这两个搞混了),因为旧的已经贬值了。
如有任何帮助,我们将不胜感激。
我也在用 Python 3.8。
我刚遇到同样的问题,发现把
def recompute_fov(fov_map, x, y, radius, light_walls=True, algorithm=0):
libtcod.map_compute_fov(fov_map, x, y, radius, light_walls, algorithm)
在 fov_functions.py 中的代码末尾修复了
“AttributeError: 'NoneType' 对象没有属性 'compute_fov'”
我和你一样遇到的问题。
以下是教程作者(截至第 4 部分)fov_functions.py 设置的方式:
import libtcodpy as libtcod
def initialize_fov(game_map):
fov_map = libtcod.map_new(game_map.width, game_map.height)
for y in range(game_map.height):
for x in range(game_map.width):
libtcod.map_set_properties(fov_map, x, y, not game_map.tiles[x][y].block_sight,
not game_map.tiles[x][y].blocked)
return fov_map
def recompute_fov(fov_map, x, y, radius, light_walls=True, algorithm=0):
libtcod.map_compute_fov(fov_map, x, y, radius, light_walls, algorithm)
这是作者在教程每一部分末尾放置的第 4 部分代码的 link:https://github.com/TStand90/roguelike_tutorial_revised/tree/part4
这是我找到 fov_functions 文件的地方,我将其与我的
进行了比较
作者将代码放在每个部分末尾的位置:https://i.stack.imgur.com/AgjCp.png
希望对您有所帮助!
我会尽量做到既简短又透彻。
我正在关注下面的 tcod Rouguelike 教程 link:
http://rogueliketutorials.com/tutorials/tcod/
我正在使用 PyCharm Community Edition,但我认为这并不重要。一切进展顺利,直到第 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's insight on 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,因此教程。我知道数组是什么。但是我不知道如何让我现有的代码与这个新的 function/module 一起工作(我把这两个搞混了),因为旧的已经贬值了。
如有任何帮助,我们将不胜感激。
我也在用 Python 3.8。
我刚遇到同样的问题,发现把
def recompute_fov(fov_map, x, y, radius, light_walls=True, algorithm=0):
libtcod.map_compute_fov(fov_map, x, y, radius, light_walls, algorithm)
在 fov_functions.py 中的代码末尾修复了
“AttributeError: 'NoneType' 对象没有属性 'compute_fov'”
我和你一样遇到的问题。
以下是教程作者(截至第 4 部分)fov_functions.py 设置的方式:
import libtcodpy as libtcod
def initialize_fov(game_map):
fov_map = libtcod.map_new(game_map.width, game_map.height)
for y in range(game_map.height):
for x in range(game_map.width):
libtcod.map_set_properties(fov_map, x, y, not game_map.tiles[x][y].block_sight,
not game_map.tiles[x][y].blocked)
return fov_map
def recompute_fov(fov_map, x, y, radius, light_walls=True, algorithm=0):
libtcod.map_compute_fov(fov_map, x, y, radius, light_walls, algorithm)
这是作者在教程每一部分末尾放置的第 4 部分代码的 link:https://github.com/TStand90/roguelike_tutorial_revised/tree/part4 这是我找到 fov_functions 文件的地方,我将其与我的
进行了比较作者将代码放在每个部分末尾的位置:https://i.stack.imgur.com/AgjCp.png
希望对您有所帮助!