Занятный пример вывода разноцветного текста на Python
28 июня 2016
Сегодня я хотел бы вновь поделиться очень простым скриптом, который, если честно, и не очень-то тянет на отдельную заметку. Скрипт этот демонстрирует вывод в консоль разноцветного текста с использованием библиотеки termcolor. Но, как вы могли понять по заголовку, на самом деле все чуточку интереснее…
Установка termcolor:
Сам скрипт:
import sys
from termcolor import colored
def file_to_list(fname):
with open(fname, "r") as f:
return [x.strip() for x in f.readlines()]
def make_colored(ch):
chars = {
"~": ("blue", []),
".": ("white", []),
"#": ("green", []),
"O": ("white", ["bold"]),
"^": ("red", ["dark"]),
"=": ("red", ["dark"]),
}
default = ("red", [])
color, attrs = chars.get(ch, default)
return colored(ch, color, attrs=attrs)
def main():
if len(sys.argv) < 2:
print("Usage: {} <file>".format(sys.argv[0]), file=sys.stderr)
sys.exit(1)
lines = file_to_list(sys.argv[1])
for src_line in lines:
dst_line = ""
i = 0
chnum = len(src_line)
while i < chnum:
ch = src_line[i]
dst_line = dst_line + make_colored(ch)
i += 1
print(dst_line)
if __name__ == "__main__":
main()
А вот так выглядит пример его вывода:
Дав волю воображению, можно увидеть здесь карту в ASCII-арте. Тильда обозначает моря и реки, точки — равнины, # — это леса, а ^ — это горы. Знак равенства означает наличие моста, а жирная буква O символизируют город, обнесенный стеной. Красным цветом обозначен путь, проложенный от текущего положения героя (*) до точки назначения (X).
Если когда-нибудь решите писать свою инди RPG или пошаговую стратегию, на первое время можно пользоваться такой графикой. Отладить механику и баланс, а уже потом писать что-то более красочное на каком-нибудь OpenGL. Что интересно, текстовый формат при этом можно продолжать использовать для карт и сейвов.
Полную версию исходников к этому посту вы найдете на GitHub. У меня все, спасибо за внимание :)
Метки: Python.
Вы можете прислать свой комментарий мне на почту, или воспользоваться комментариями в Telegram-группе.