Интерпретация сообщения об ошибке, относящегося к классу, который не распознает данный аргумент. - PullRequest
0 голосов
/ 10 декабря 2018

Недавно я запустил веб-учебник по созданию видеоигры на 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 не стали), если это необходимо.

Спасибо!

...