Недавно я запустил веб-учебник по созданию видеоигры на Roguelike, и я в основном следовал этому письму.Однако в ней либо есть некоторые недостатки, либо она устарела, так как возникает много ошибок, которые я должен исправить.Весь учебник можно увидеть здесь , если вы заинтересованы.Игра использует библиотеку libtcod, чтобы делать некоторые вещи, но большинство названий говорят сами за себя.
Проблема, с которой я столкнулся в настоящее время, состоит в том, что созданный мной класс Object, который принимает 5 аргументов, не распознает аргумент 'char' в экземпляре другого объекта.Я пришел к такому выводу, удалив части кода, чтобы посмотреть, что работает: удаление персонажа-игрока заставило код скомпилироваться.
class Object:
#creates a broad object-class usable for most things
#represented by character on screen always
def __init__(self, x, y, char, color):
self.x = x
self.y = y
self.color = color
...
def draw(self):
#sets the color & then draws the character that represents this object at position
libtcod.console_set_default_foreground(con, self.color)
libtcod.console_put_char(con, self.x, self.y, self.char, libtcod.BKGND_NONE)
Как видите, класс принимает пять аргументов: неявное «я», координату x объекта, координату y объекта, символ ASCII, представляющий объект, и цвет объекта.Символ ASCII.
С помощью этого класса я написал следующий объект:
player = Object(SCREEN_WIDTH/2, SCREEN_HEIGHT/2, '@', libtcod.white)
и поместил его в список под названием «объекты», чтобы упростить его рендеринг.Тем не менее, я получаю следующее сообщение при запуске программы:
Traceback (most recent call last):
File "roguelike_main.py", line 126, in <module>
render_all()
File "roguelike_main.py", line 94, in render_all
object.draw()
File "roguelike_main.py", line 36, in draw
libtcod.console_put_char(con, self.x, self.y, self.char, libtcod.BKGND_NONE)
AttributeError: Object instance has no attribute 'char'
Эта ошибка возникает только из-за того, что объект не имеет распознанного аргумента char.Я очень ценю любую помощь, которую вы можете оказать мне, хотя проблема, вызывающая это, вероятно, очень и очень мала. Здесь - это полный код (OC не стали), если это необходимо.
Спасибо!