2014-10-15 3 views
-1

Я знаю, что этот вопрос, вероятно, надуманный, но если эта возможность возможна, это было бы потрясающе. Я хочу изменить цвет текста, когда игрок его пишет, поэтому, если набираются определенные ключевые слова, они меняются на определенный цвет.Как изменить цвет текста в приложении консоли после его печати?

Я знаю, что вы можете изменить местоположение курсора, но я не знаю, поможет ли это в изменении цвета. Я также знаю, что вы можете делать Console.Clear, но, если возможно, я бы этого не делал, так как тогда мне нужно сохранить строку и перезаписать ее все, а ее не применимо/правдоподобно для моей программы.

ответ

2

Короткий ответ: Вообще-то нет, потому что стандартный вывод исторически был носителем только для записи (думаю, 60-мм телепринтеры).

Сложный ответ: да, благодаря магии \r.

В общем, вы бы прочитали то, что пользователь вводит на основе каждого нажатия клавиши, и отслеживайте его самостоятельно (возможно, в StringBuilder), а затем, если пользователь вводит волшебное слово, удалите ранее напечатанную строку, используя \r (который перемещает курсор в первый столбец консоли без создания новой строки), а затем перезаписывает то, что было ранее напечатано там, но установив Console.ForegroundColor перед повторной печатью.

Вам не нужно, чтобы вручную напечатать каждое нажатие клавиши самостоятельно (до переиздания его с подсветкой), как Console.ReadKey не вмешивается в противном случае нормальной работой окна консоли и ее локальное эхо поведения.,

Вот что-то простое:

StringBuilder sb = new StringBuilder(); 
while(true) { 

    ConsoleKeyInfo key = Console.ReadKey(); 
    if(!Char.IsControl(key.KeyChar)) { 

     sb.Append(key.KeyChar); 
     if(sb.ToString() == "magic!") { 

      Console.Write("\r"); 
      Console.ForegroundColor = ConsoleColor.Blue; 
      Console.Write(sb.ToString()); 
      Console.ResetColor(); 
     } 
    } else { 
     sb.Length = 0; 
    } 
} 

Этот код ошибочный и неполный, но я думаю, что он демонстрирует базовую концепцию.

+0

И чтобы уточнить, существуют свойства Console.CursorLeft и CursorTop, которые позволяют вам позиционировать, где текст будет записан в окне. Таким образом, вы можете расширить предложение Дай переписать текст в любом месте экрана консоли для достижения своей цели. Конечно, если экран прокручивает и перемещает текст, который вы уже написали, все ставки отключены. Никто не сказал, что консольная графика будет легкой. :) –

+0

Спасибо человеку, я посмотрю на это – DurpBurger

Смежные вопросы