C#) Team Text RPG 4
터미널 글자 색상
이번에는 C# 콘솔에서 글자 색상을 조절하는 방법을 적용해봤다. 기본적으로 제공되는 색상을 사용하는 방법과, 추가 색상을 적용하는 방법을 정리해본다.
기본 색상 적용
C#에서는 ConsoleColor를 이용해 기본적인 색상을 사용할 수 있다.
이를 enum으로 정리하여 관리하면 사용성이 좋아 질 것이다.
public enum TEXTCOLOR
{
BLACK = ConsoleColor.Black,
BLUE = ConsoleColor.Blue,
CYAN = ConsoleColor.Cyan,
DBLUE = ConsoleColor.DarkBlue,
DCYAN = ConsoleColor.DarkCyan,
DGRAY = ConsoleColor.DarkGray,
DGREEN = ConsoleColor.DarkGreen,
DMAGENTA = ConsoleColor.DarkMagenta,
DRED = ConsoleColor.DarkRed,
DYELLOW = ConsoleColor.DarkYellow,
GRAY = ConsoleColor.Gray,
GREEN = ConsoleColor.Green,
MAGENTA = ConsoleColor.Magenta,
RED = ConsoleColor.Red,
WHITE = ConsoleColor.White,
YELLOW = ConsoleColor.Yellow,
}
이렇게 정의한 TEXTCOLOR enum을 활용해 색상을 지정하는 ColorText 메서드를 구현할 수 있다.
// 지정 색상 사용
public static void ColorText(string message, TEXTCOLOR color, bool lineChange = true)
{
Console.ForegroundColor = (ConsoleColor)color;
Console.Write(message);
Console.ResetColor();
if (lineChange)
Console.WriteLine("");
}
이제 ColorText("Hello World!", TEXTCOLOR.RED);와 같이 호출하면 글자가 빨간색으로 출력된다.
추가 색상 적용 (RGB 값 사용)
기본 제공 색상 외에도 ANSI TrueColor를 활용하여 RGB 값을 직접 지정할 수 있었다.
// 추가 색상 사용
public static void ColorText(string message, int r=0, int g=0, int b=0, bool lineChange = true)
{
Console.OutputEncoding = System.Text.Encoding.UTF8;
Console.Write($"\u001b[38;2;{r};{g};{b}m");
Console.Write(message);
Console.Write("\u001b[0m");
if (lineChange)
Console.WriteLine("");
}
이제 ColorText("Hello", 255, 0, 0);을 호출하면 빨간색으로 출력된다.
구조체를 이용한 RGB 입력 방식
위의 메서드를 더 직관적으로 사용하기 위해 COLOR 구조체를 정의한다.
public struct COLOR
{
public int r;
public int g;
public int b;
public COLOR(int r = 0, int g = 0, int b = 0)
{
this.r = r;
this.g = g;
this.b = b;
}
}
public static void ColorText(string message, COLOR color, bool lineChange = true)
{
ColorText(message, color.r, color.g, color.b, lineChange);
}
이제 ColorText("Hello", new COLOR(255, 0, 0));을 호출하면 동일하게 빨간색으로 출력된다.
여러 개의 문자열을 한 번에 출력하기
여러 개의 문장을 한 번에 출력할 수 있도록 Dictionary<string, COLOR>를 활용하는 방법도 만들었다.
public static void ColorText(Dictionary<string, COLOR> stringList, bool lineChange = true)
{
foreach (var item in stringList)
{
ColorText(item.Key, item.Value, lineChange);
}
if (lineChange)
Console.WriteLine("");
}
이제 다음과 같이 사용하면 여러 개의 문자열을 각각 다른 색상으로 출력된다.
var textColors = new Dictionary<string, COLOR>
{
{ "Red Text", new COLOR(255, 0, 0) },
{ "Green Text", new COLOR(0, 255, 0) },
{ "Blue Text", new COLOR(0, 0, 255) }
};
ColorText(textColors);
정리
이번 글에서는 C# 콘솔에서 글자 색상을 조절하는 다양한 방법을 제작해봤다.
- 기본
ConsoleColor를 활용한 색상 지정 ANSI TrueColor를 활용한 RGB 색상 지정COLOR구조체를 활용한 보다 직관적인 사용 방식Dictionary를 활용한 다중 색상 출력 방식
댓글남기기