← На главную

Занятный пример вывода разноцветного текста на Python

Сегодня я хотел бы вновь поделиться очень простым скриптом, который, если честно, и не очень-то тянет на отдельную заметку. Скрипт этот демонстрирует вывод в консоль разноцветного текста с использованием библиотеки termcolor. Но, как вы могли понять по заголовку, на самом деле все чуточку интереснее…

Установка termcolor:

sudo pip3 install termcolor

Сам скрипт:

#!/usr/bin/env python3 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()

А вот так выглядит пример его вывода:

Вывод разноцветного текста на Python при помощи termcolor

Дав волю воображению, можно увидеть здесь карту в ASCII-арте. Тильда обозначает моря и реки, точки – равнины, # – это леса, а ^ – это горы. Знак равенства означает наличие моста, а жирная буква O символизируют город, обнесенный стеной. Красным цветом обозначен путь, проложенный от текущего положения героя (*) до точки назначения (X).

Если когда-нибудь решите писать свою инди RPG или пошаговую стратегию, на первое время можно пользоваться такой графикой. Отладить механику и баланс, а уже потом писать что-то более красочное на каком-нибудь OpenGL. Что интересно, текстовый формат при этом можно продолжать использовать для карт и сейвов.

Полную версию исходников к этому посту вы найдете на GitHub. У меня все, спасибо за внимание :)