我有一个想法,在我的类似 ASCII 的 Roguelike 控制台游戏中使用汉字作为实体。我用的是python-tcod,不知道有没有办法在里面使用汉字。
我尝试通过console_set_custom_font函数设置中文字体,该函数在显示英文字符时效果很好,但对于中文字符则不行。他们只是不显示。
libtcod.console_set_custom_font('GoJuOn.TTF', libtcod.FONT_TYPE_GREYSCALE)
libtcod.console_init_root(constants['screen_width'], constants['screen_height'], constants['window_title'], False, libtcod.RENDERER_SDL2)
我试图让我的角色看起来像你,但得到了这个。(您可以看到角色移动的 FOV 以及它如何覆盖物品。)
例如,这就是它以前的工作方式。
源代码取自 libtcod python教程
upd:我尝试将 '你'.encode() 与 gb18030、gbk、gb2312、hz、cp950、bi0ghkscs、big5、iso2022_jp_2 编码一起使用,但它给了我错误符号的输出。例如,段落符号或 tilda ('~'),或上面带有点的几个字母。
upd2:我尝试使用另一种编码的代码
player = Entity(0, 0, '你'.encode('gb18030'), libtcod.white, 'Player',
render_order=RenderOrder.ACTOR, blocks=True,
fighter=fighter_component, inventory=inventory_component, level=level_component)
呈现 char 的共同代码('你' char 是实体的 char 属性)
def draw_entity(con, entity, fov_map, game_map):
if libtcod.map_is_in_fov(fov_map, entity.x, entity.y) or (entity.stairs and game_map.tiles[entity.x][entity.y].explored):
libtcod.console_set_default_foreground(con, entity.color)
libtcod.console_put_char(con, entity.x, entity.y, entity.char, libtcod.BKGND_NONE)