Я постараюсь быть кратким и исчерпывающим.
Я следую учебнику tcod Rouguelike по следующей ссылке:
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 о 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 требуется массив из двух значений. Это также как-то связано с прозрачностью, которая на данный момент выше моих сил ради того, чего я хочу достичь.
Я все еще изучаю Python, поэтому учебник. Я понимаю, что такое массив. Но я понятия не имею, как заставить мой существующий код работать с этой новой функцией/модулем (я их перепутал), поскольку старый устарел.
Любая помощь будет оценена по достоинству.
Я также использую Python 3.8.
import tcod as libtcod
, описанный в части 0 руководства?'NoneType' object has no attribute 'compute_fov'
повышается, потому чтоlibtcod
равноNone
, когда вы вызываетеlibtcod.compute_fov(...)
- person Aaron   schedule 12.06.2020libtcod
, аNone
, извините за неправильное направление. Мой питон заржавел, и я не знаком с этими библиотеками, я могу только надеяться, что вы найдете кого-то еще, кто поможет! - person Aaron   schedule 17.06.2020