Вывод цветного текста в консоль одной строкой - C#

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток ! Была поставлена одна интересная задача. Необходимо создать что-то похожее на обычный консольный "рогалик", только из ASCII - символов. (Кстати, получается похоже) Вся физика и расчеты работают хорошо, но вот с выводом проблема - он работает очень медленно. Допустим, есть у нас игровое поле размером 100 (ширина) на 40 (высота). В самой первой версии изображение выводилось посимвольно, и это было очень медленно. Тогда алгоритм был переделан, и все выводилось одной (!) строкой, то есть строкой из 100*40=4000 символом. Вот попробуйте выполнить это :
Console.SetWindowSize(21,10);
Console.SetBufferSize(21,10);
Console.WriteLine();
for (int c = 0; c < 56; c++) str += " # ";
Console.Write(str);
Console.ReadKey();
Но одну строку нельзя вывести разными цветами. Гуглил много, но никаких методов решения данной проблемы не нашел. Решил задать вопрос тут. Подскажите, пожалуйста, если кто-то знает ! Заранее благодарен !
Или, может быть, есть способ вывести сразу массив разноцветных символов ? Что-то вроде WriteConsoleOutput в C++ ?

Решение задачи: «Вывод цветного текста в консоль одной строкой»

textual
Листинг программы
string s = "абвгдеёжзийклмнопрстуфхцчшщьыъэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯ";
byte[] b1 = s.Select(ch => ConvertEncodings.UnicodeToASCII((short)ch)).ToArray();
string s2 = Encoding.GetEncoding(866).GetString(b1);
byte[] b2 = Encoding.Convert(Encoding.Unicode, Encoding.GetEncoding(866), Encoding.Unicode.GetBytes(s));
if (s == s2 && b1.SequenceEqual(b2)) Console.WriteLine("Всё в порядке, шеф!");

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4 из 5
Похожие ответы