Устанавливаем
Для начала, ставим питон, если еще не установлен:sudo apt-get install pythonесли еще неустановлена библиотека libsdl, то ставим:
sudo apt-get install libsdl1.2debianтеперь скачиваем и распаковываем libtcod (http://doryen.eptalys.net/libtcod/download/)
wget -c http://doryen.eptalys.net/?file_id=26 tar -xvf ./libtcod-1.5.1-linux.tar.gz
Тест libtcod библиотеки
создаем директорию для нашего проекта и копируем необходимые файлы дистрибутива libtcodemkdir firstprj cp ./libtcod-1.5.1/libtcod.so ./libtcod-1.5.1/libtcodpy.py ./libtcod-1.5.1/data/fonts/consolas10x10_gs_tc.png ./firstprj/ cd firtsprjсоздадим в директории firstprj тестовый проект, для того чтобы убедиться что libtcod работает
#!/usr/bin/python import libtcodpy as libtcod #размер окна в знакоместах SCREEN_WIDTH = 80 SCREEN_HEIGHT = 50 LIMIT_FPS = 20 #ограничим фпс. максимум 20 кадров в секунду libtcod.console_set_custom_font('consolas10x10_gs_tc.png', libtcod.FONT_TYPE_GREYSCALE | libtcod.FONT_LAYOUT_TCOD) libtcod.console_init_root(SCREEN_WIDTH, SCREEN_HEIGHT, 'python/libtcod tutorial', False) libtcod.sys_set_fps(LIMIT_FPS) while not libtcod.console_is_window_closed(): libtcod.console_set_default_foreground(0, libtcod.white) libtcod.console_put_char(0, 1, 1, '@', libtcod.BKGND_NONE) libtcod.console_flush()делаем файл запускаемым
chmod +x ./firtsprj.pyи запускаем его:
Русский шрифт (кодировка windows-1251)
для того чтобы интерпретатор python принимал в исходном файле символы из кодировки windows-1251, добавляем в исходник 2-й строкой, после строки:#!/usr/bin/pythonстроку:
# -*- coding: windows-1251 -*-скачиваем текстуру русского шрифтов с вики rlgclub.ru
wget -c http://rlgclub.ru/wikisite/images/2/2d/Ruterminal_big_12x12_gs_tc.pngменяем строку загрузки шрифта на:
libtcod.console_set_custom_font("Ruterminal_big_12x12_gs_tc.png", libtcod.FONT_LAYOUT_TCOD | libtcod.FONT_TYPE_GREYSCALE, 32, 32)после нее добавляем команды для маппинга символов:
libtcod.console_map_ascii_codes_to_font('А',32,0,5); libtcod.console_map_ascii_codes_to_font('а',32,0,6);для тестирования вывода русского текста изменяем строку:
libtcod.console_put_char(0, 1, 1, '@', libtcod.BKGND_NONE)на:
libtcod.console_print(0,5,5,"Тест!");важно: исходный файл сохраняем в кодировке windows-1251
полный исходный код:
#!/usr/bin/python # -*- coding: windows-1251 -*- import libtcodpy as libtcod #размер окна в знакоместах SCREEN_WIDTH = 80 SCREEN_HEIGHT = 50 LIMIT_FPS = 20 #ограничим фпс. максимум 20 кадров в секунду libtcod.console_set_custom_font("Ruterminal_big_12x12_gs_tc.png", libtcod.FONT_LAYOUT_TCOD | libtcod.FONT_TYPE_GREYSCALE, 32, 32) libtcod.console_init_root(SCREEN_WIDTH, SCREEN_HEIGHT, 'python/libtcod tutorial', False) libtcod.sys_set_fps(LIMIT_FPS) libtcod.console_map_ascii_codes_to_font('А',32,0,5); libtcod.console_map_ascii_codes_to_font('а',32,0,6); while not libtcod.console_is_window_closed(): libtcod.console_set_default_foreground(0, libtcod.white) libtcod.console_print(0,5,5,"Тест!"); libtcod.console_flush()
unicode шрифты
в заголовке исходного файла указываем кодировку utf-8# -*- coding: utf-8 -*-грузим unicode шрифт:
libtcod.console_set_custom_font("consolas_unicode_16x16.png",libtcod.FONT_LAYOUT_ASCII_INROW | libtcod.FONT_TYPE_GREYSCALE,32,64);удаляем строки маппинга ascii кодов libtcod.console_map_ascii_codes_to_font(...)
выводим текст следующим образом
libtcod.console_print(0,5,5,u"Привет!");т.е. перед строкой с текстом добавляем символ "u", который означает что строка в unicode кодировке.
важно:файл должен быть сохранен в кодировке utf-8
полный исходный код:
#!/usr/bin/python # -*- coding: utf-8 -*- import libtcodpy as libtcod #размер окна в знакоместах SCREEN_WIDTH = 80 SCREEN_HEIGHT = 25 LIMIT_FPS = 20 #ограничим фпс. максимум 20 кадров в секунду libtcod.console_set_custom_font("consolas_unicode_16x16.png",libtcod.FONT_LAYOUT_ASCII_INROW | libtcod.FONT_TYPE_GREYSCALE,32,64); libtcod.console_init_root(SCREEN_WIDTH, SCREEN_HEIGHT, 'python/libtcod tutorial', False) libtcod.sys_set_fps(LIMIT_FPS) while not libtcod.console_is_window_closed(): libtcod.console_set_default_foreground(0, libtcod.white) libtcod.console_print(0,5,5,u"Привет!"); libtcod.console_flush()
Спасибо !
ОтветитьУдалитьЗдравствуйте,
ОтветитьУдалитьЯ новичок в разработке рогаликов, и сейчас сталкиваюсь с проблемой, что на сборке libtcode 1.6.7 и на Python 3 не получается запустить кириллицу, хотя следую точно по инструкции. Пишет:
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-3: ordinal not in range(128)
После строки:
libtcod.console_print(0,5,5,"Тест!");