Libtcodpy 有问题
Having problems with Libtcodpy
我正在用 libtcodpy 写一个 roguelike。它有效,但是当我运行此列表时:页面底部的 http://kooneiform.wordpress.com/2009/03/29/241/ 是完整列表和我尝试过的其他一些列表,但出现如下错误:
仅供参考,我在 Windows 上,确实有 libtcodpy.py、SDL.dll、libtcod-mingw.dll 文件,它们在遵循最重要的教程时确实有效流行于 libtcodpy。
对于上面的清单,我收到了这个特定的错误:
$ python roguelike_practice2.py
Traceback (most recent call last):
File "roguelike_practice2.py", line 165, in <module>
draw()
File "roguelike_practice2.py", line 98, in draw
libtcod.console_set_foreground_color(0, libtcod.white)
AttributeError: 'module' object has no attribute 'console_set_foreground_color'
我在同一个程序中也遇到了与 console_set_background_color、console_print_left 完全相同的问题。没有工作。都出现同样的错误。
对于像这个这样的其他列表:
#!/usr/bin/python
###imports###
import os
import libtcodpy as libtcod
###utility functions###
def get_key(key):
if key.vk == libtcod.KEY_CHAR:
return chr(key.c)
else:
return key.vk
###global constants and variables###
window_width = 46
window_height = 20
first = True
fov_px = 9
fov_py = 10
fov_recompute = True
fov_map = None
fov_colors = {
'dark wall' : libtcod.Color(0, 0, 100),
'light wall' : libtcod.Color(130, 110, 50),
'dark ground' : libtcod.Color(50, 50, 150),
'light ground' : libtcod.Color(200, 180, 50)
}
fov_init = False
fov_radius = 4
do = {
'up' : (0, -1),
'down' : (0, 1),
'right' : (1, 0),
'left' : (-1, 0)
}
keys = {
'i' : do['up'],
'k' : do['down'],
'j' : do['left'],
'l' : do['right'],
libtcod.KEY_UP : do['up'],
libtcod.KEY_KP8 : do['up']
}
smap = ['##############################################',
'####################### #################',
'##################### # ###############',
'###################### ### ###########',
'################## ##### ####',
'################ ######## ###### ####',
'############### #################### ####',
'################ ###### ##',
'######## ####### ###### # # # ##',
'######## ###### ### ##',
'######## ##',
'#### ###### ### # # # ##',
'#### ### ########## #### ##',
'#### ### ########## ###########=##########',
'#### ################## ##### #####',
'#### ### #### ##### #####',
'#### # #### #####',
'######## # #### ##### #####',
'######## ##### ####################',
'##############################################',
]
###drawing###
def draw():
global fov_px, fov_py, fov_map, first
global fov_init, fov_recompute, smap
if first:
wh = window_height
ww = window_width
first = False
libtcod.console_clear(0)
libtcod.console_set_fore(0, ww, wh, libtcod.white)
libtcod.console_print_left(0, 1, 1, libtcod.BKGND_NONE,
"IJKL : move around")
libtcod.console_set_fore(0, ww, wh, libtcod.black)
libtcod.console_put_char(0, fov_px, fov_py, '@',
libtcod.BKGND_NONE)
for y in range(window_height):
for x in range(window_width):
if smap[y][x] == '=':
libtcod.console_put_char(0, x, y,
libtcod.CHAR_DHLINE,
libtcod.BKGND_NONE)
if not fov_init:
fov_init = True
fov_map = libtcod.map_new(window_width, window_height)
for y in range(window_height):
for x in range(window_width):
if smap[y][x] == ' ':
libtcod.map_set_properties(fov_map, x, y, True, True)
elif smap[y][x] == '=':
libtcod.map_set_properties(fov_map, x, y, True, False)
if fov_recompute:
fov_recompute = False
libtcod.map_compute_fov(fov_map, fov_px, fov_py, fov_radius, True)
for y in range(window_height):
for x in range(window_width):
affect, cell = 'dark', 'ground'
if libtcod.map_is_in_fov(fov_map, x, y):
affect = 'light'
if (smap[y][x] == '#'):
cell = 'wall'
color = fov_colors['%s %s' % (affect, cell)]
libtcod.console_set_back(0, x, y, color, libtcod.BKGND_SET)
###game state updates###
def update(key):
global fov_py, fov_px, fov_recompute, smap
key = get_key(key)
if key in keys:
dx, dy = keys[key]
if smap[fov_py+dy][fov_px+dx] == ' ':
libtcod.console_put_char(0, fov_px, fov_py, ' ',
libtcod.BKGND_NONE)
fov_px = fov_px + dx
fov_py = fov_py + dy
libtcod.console_put_char(0, fov_px, fov_py, '@',
libtcod.BKGND_NONE)
fov_recompute = True
###initialization and main loop###
font = os.path.join('fonts', 'arial12x12.png')
libtcod.console_set_custom_font(font, libtcod.FONT_LAYOUT_TCOD | libtcod.FONT_TYPE_GREYSCALE)
libtcod.console_init_root(window_width, window_height, 'Python Tutorial', False)
while not libtcod.console_is_window_closed():
draw()
libtcod.console_flush()
key = libtcod.console_wait_for_keypress(True)
update(key)
if key.vk == libtcod.KEY_ESCAPE:
break
我收到以下错误,我再次在文件夹中拥有所有需要的文件,并且在 Windows。
列表 2 错误:
Traceback (most recent call last):
File "roguelike_practice1.py", line 167, in <module>
draw()
File "roguelike_practice1.py", line 100, in draw
libtcod.console_set_fore(0, ww, wh, libtcod.white)
File "c:\Users\cshenkan\CloudStation\Programming\Libtcod\Project 2\libtcodpy.p
y", line 764, in console_set_fore
_lib.TCOD_console_set_fore(con, x, y, col)
File "c:\Python27\lib\ctypes\__init__.py", line 378, in __getattr__
func = self.__getitem__(name)
File "c:\Python27\lib\ctypes\__init__.py", line 383, in __getitem__
func = self._FuncPtr((name_or_ordinal, self))
AttributeError: function 'TCOD_console_set_fore' not found
我经常遇到这个 TCOD_console_set_fore 错误。但是说我把它注释掉,我得到了同样的错误,但是使用了另一个函数,例如 TCOD_console_set_back 和其他函数。
不确定为什么会出现这些错误。我相信使用 Python 2.7.9 32 位和 libtcod 1.5.1。正在运行 Windows 7 64 位。请记住,我可以让其他程序运行,这些程序不需要任何 set_foreground 和变体函数,或者 print_left 函数或任何其他不起作用的函数。但我确信它会影响所有无法正常工作的功能的一两个问题。 \
如果有人有任何想法,我已经花了很多时间在网上查找信息但无济于事。 libtcod 的论坛需要几天时间才能获得管理员批准加入 - 蹩脚。
无论如何提前谢谢!如有任何问题或需要说明,请问我。
这些函数似乎已在 1.5.1 中弃用。我可以在 1.5.0 中找到它们,但在 1.5.1 和 1.5.2 中都找不到。我认为您必须改用 console_print_ex 或 console_print_rect_ex。
否则你可以关闭当然切换回 1.5.0.
TCOD 1.5.1 renamed some functions,这就是您的两个列表崩溃的原因。
版本 1.5.1 将 console_set_foreground_color
重命名为 console_set_default_foreground
,console_set_background_color
重命名为 console_set_default_background
,console_set_fore
并将 console_set_back
重命名为 console_set_char_foreground
和 console_set_char_background
,console_wait_for_keypress
已替换为 sys_wait_for_event
。
此外,console_print_left
已被 console_print_ex
取代,它在背景和要打印的字符串之间有一个额外的 'alignment' 参数。
我正在用 libtcodpy 写一个 roguelike。它有效,但是当我运行此列表时:页面底部的 http://kooneiform.wordpress.com/2009/03/29/241/ 是完整列表和我尝试过的其他一些列表,但出现如下错误:
仅供参考,我在 Windows 上,确实有 libtcodpy.py、SDL.dll、libtcod-mingw.dll 文件,它们在遵循最重要的教程时确实有效流行于 libtcodpy。
对于上面的清单,我收到了这个特定的错误:
$ python roguelike_practice2.py
Traceback (most recent call last):
File "roguelike_practice2.py", line 165, in <module>
draw()
File "roguelike_practice2.py", line 98, in draw
libtcod.console_set_foreground_color(0, libtcod.white)
AttributeError: 'module' object has no attribute 'console_set_foreground_color'
我在同一个程序中也遇到了与 console_set_background_color、console_print_left 完全相同的问题。没有工作。都出现同样的错误。
对于像这个这样的其他列表:
#!/usr/bin/python
###imports###
import os
import libtcodpy as libtcod
###utility functions###
def get_key(key):
if key.vk == libtcod.KEY_CHAR:
return chr(key.c)
else:
return key.vk
###global constants and variables###
window_width = 46
window_height = 20
first = True
fov_px = 9
fov_py = 10
fov_recompute = True
fov_map = None
fov_colors = {
'dark wall' : libtcod.Color(0, 0, 100),
'light wall' : libtcod.Color(130, 110, 50),
'dark ground' : libtcod.Color(50, 50, 150),
'light ground' : libtcod.Color(200, 180, 50)
}
fov_init = False
fov_radius = 4
do = {
'up' : (0, -1),
'down' : (0, 1),
'right' : (1, 0),
'left' : (-1, 0)
}
keys = {
'i' : do['up'],
'k' : do['down'],
'j' : do['left'],
'l' : do['right'],
libtcod.KEY_UP : do['up'],
libtcod.KEY_KP8 : do['up']
}
smap = ['##############################################',
'####################### #################',
'##################### # ###############',
'###################### ### ###########',
'################## ##### ####',
'################ ######## ###### ####',
'############### #################### ####',
'################ ###### ##',
'######## ####### ###### # # # ##',
'######## ###### ### ##',
'######## ##',
'#### ###### ### # # # ##',
'#### ### ########## #### ##',
'#### ### ########## ###########=##########',
'#### ################## ##### #####',
'#### ### #### ##### #####',
'#### # #### #####',
'######## # #### ##### #####',
'######## ##### ####################',
'##############################################',
]
###drawing###
def draw():
global fov_px, fov_py, fov_map, first
global fov_init, fov_recompute, smap
if first:
wh = window_height
ww = window_width
first = False
libtcod.console_clear(0)
libtcod.console_set_fore(0, ww, wh, libtcod.white)
libtcod.console_print_left(0, 1, 1, libtcod.BKGND_NONE,
"IJKL : move around")
libtcod.console_set_fore(0, ww, wh, libtcod.black)
libtcod.console_put_char(0, fov_px, fov_py, '@',
libtcod.BKGND_NONE)
for y in range(window_height):
for x in range(window_width):
if smap[y][x] == '=':
libtcod.console_put_char(0, x, y,
libtcod.CHAR_DHLINE,
libtcod.BKGND_NONE)
if not fov_init:
fov_init = True
fov_map = libtcod.map_new(window_width, window_height)
for y in range(window_height):
for x in range(window_width):
if smap[y][x] == ' ':
libtcod.map_set_properties(fov_map, x, y, True, True)
elif smap[y][x] == '=':
libtcod.map_set_properties(fov_map, x, y, True, False)
if fov_recompute:
fov_recompute = False
libtcod.map_compute_fov(fov_map, fov_px, fov_py, fov_radius, True)
for y in range(window_height):
for x in range(window_width):
affect, cell = 'dark', 'ground'
if libtcod.map_is_in_fov(fov_map, x, y):
affect = 'light'
if (smap[y][x] == '#'):
cell = 'wall'
color = fov_colors['%s %s' % (affect, cell)]
libtcod.console_set_back(0, x, y, color, libtcod.BKGND_SET)
###game state updates###
def update(key):
global fov_py, fov_px, fov_recompute, smap
key = get_key(key)
if key in keys:
dx, dy = keys[key]
if smap[fov_py+dy][fov_px+dx] == ' ':
libtcod.console_put_char(0, fov_px, fov_py, ' ',
libtcod.BKGND_NONE)
fov_px = fov_px + dx
fov_py = fov_py + dy
libtcod.console_put_char(0, fov_px, fov_py, '@',
libtcod.BKGND_NONE)
fov_recompute = True
###initialization and main loop###
font = os.path.join('fonts', 'arial12x12.png')
libtcod.console_set_custom_font(font, libtcod.FONT_LAYOUT_TCOD | libtcod.FONT_TYPE_GREYSCALE)
libtcod.console_init_root(window_width, window_height, 'Python Tutorial', False)
while not libtcod.console_is_window_closed():
draw()
libtcod.console_flush()
key = libtcod.console_wait_for_keypress(True)
update(key)
if key.vk == libtcod.KEY_ESCAPE:
break
我收到以下错误,我再次在文件夹中拥有所有需要的文件,并且在 Windows。
列表 2 错误:
Traceback (most recent call last):
File "roguelike_practice1.py", line 167, in <module>
draw()
File "roguelike_practice1.py", line 100, in draw
libtcod.console_set_fore(0, ww, wh, libtcod.white)
File "c:\Users\cshenkan\CloudStation\Programming\Libtcod\Project 2\libtcodpy.p
y", line 764, in console_set_fore
_lib.TCOD_console_set_fore(con, x, y, col)
File "c:\Python27\lib\ctypes\__init__.py", line 378, in __getattr__
func = self.__getitem__(name)
File "c:\Python27\lib\ctypes\__init__.py", line 383, in __getitem__
func = self._FuncPtr((name_or_ordinal, self))
AttributeError: function 'TCOD_console_set_fore' not found
我经常遇到这个 TCOD_console_set_fore 错误。但是说我把它注释掉,我得到了同样的错误,但是使用了另一个函数,例如 TCOD_console_set_back 和其他函数。
不确定为什么会出现这些错误。我相信使用 Python 2.7.9 32 位和 libtcod 1.5.1。正在运行 Windows 7 64 位。请记住,我可以让其他程序运行,这些程序不需要任何 set_foreground 和变体函数,或者 print_left 函数或任何其他不起作用的函数。但我确信它会影响所有无法正常工作的功能的一两个问题。 \
如果有人有任何想法,我已经花了很多时间在网上查找信息但无济于事。 libtcod 的论坛需要几天时间才能获得管理员批准加入 - 蹩脚。
无论如何提前谢谢!如有任何问题或需要说明,请问我。
这些函数似乎已在 1.5.1 中弃用。我可以在 1.5.0 中找到它们,但在 1.5.1 和 1.5.2 中都找不到。我认为您必须改用 console_print_ex 或 console_print_rect_ex。 否则你可以关闭当然切换回 1.5.0.
TCOD 1.5.1 renamed some functions,这就是您的两个列表崩溃的原因。
版本 1.5.1 将 console_set_foreground_color
重命名为 console_set_default_foreground
,console_set_background_color
重命名为 console_set_default_background
,console_set_fore
并将 console_set_back
重命名为 console_set_char_foreground
和 console_set_char_background
,console_wait_for_keypress
已替换为 sys_wait_for_event
。
此外,console_print_left
已被 console_print_ex
取代,它在背景和要打印的字符串之间有一个额外的 'alignment' 参数。