尝试运行时收到TypeError:
File "/home/XX/PycharmProjects/rogue_like/venv/lib64/python3.7/site-packages/tcod/libtcodpy.py", line 1236, in console_put_char
lib.TCOD_console_put_char(_console(con), x, y, _int(c), flag)
TypeError: an integer is required
Class Object:
def __init__(self, x, y, char, color):
self.x = x
self.y = y
self.char = char
self.color = color
def draw(self):
libtcod.console_set_default_foreground(con, self.color)
libtcod.console_put_char(con, self.x, self.y, self.char, libtcod.BKGND_NONE)
# later...
SCREEN_WIDTH = 80
SCREEN_HEIGHT = 50
player = Object(SCREEN_WIDTH/2, SCREEN_HEIGHT/2, '@', libtcod.yellow)
遵循一个流氓教程并遇到了这个问题。尝试通过将'@'更改为数字和其他方式来传递整数。尝试将其交给int(self.char)
和其他选项,但似乎遇到了麻烦。
任何帮助都会很棒!试图包含相关代码,让我知道是否还有其他内容。
编辑:
"""
...
Args:
con (Console): Any Console instance.
x (int): Character x position from the left.
y (int): Character y position from the top.
c (Union[int, AnyStr]): Character to draw, can be an integer or string.
flag (int): Blending mode to use, defaults to BKGND_DEFAULT.
"""
lib.TCOD_console_put_char(_console(con), x, y, _int(c), flag)
答案 0 :(得分:2)
在Python 3中,将两个整数相除总是会产生浮点数,因此80/2
和50/2
会产生浮点数,而不是整数。要使它们为整数,可以使用底数分割(80//2
)或强制转换为整数(int(80/2)
)。
我想您的教程适用于Python 2,因为在Python 2中,将两个整数相除总是会产生一个整数。
更多详细信息