콘솔창 배경색, 글자색 바꾸기
Console.ForegroundColor = ConsoleColor.(색상명)
을 해주면 이후에 출력되는 모든 글자가 해당 색상으로 글씨색이 바뀐다.
Console.BackgroundColor = ConsoleColor.(색상명)
을 해주면 글씨가 써있는 만큼의 배경 색이 색상으로 바뀐다.
글씨색과 배경색 둘 다 원래대로 바꿔주지 않으면 코드를 쓴 이후 모든 글씨에 적용되어 나온다.
이런식으로
따라서 원래대로 돌려주고 싶다면
Console.ResetColor();
를 써주면 배경, 글씨 색 전부 원래대로 돌아온다.
(색상명)은 공식 문서에 나온 대로
Black, Blue, Cyan, DarkBlue, DarkCyan, DarkGray, DarkGreen, DarkMagenta, DarkRed, DarkYellow, Gray, Green, Magenta, Red, White, Yelllow 가 가능하며 실제로 보면 다음과 같다.
원하는 색으로 배경색과 글자색을 골라 쓰자. (배경은 생각보다 안이뻐서 글자색을 애용)
Black | |
Blue | |
Cyan | |
DarkBlue | |
DarkCyan | |
DarkGray | |
DarkGreen | |
DarkMagenta | |
DarkRed | |
DarkYellow | |
Gray | |
Green | |
Magenta | |
Red | |
White | |
Yellow |
https://learn.microsoft.com/ko-kr/dotnet/api/system.consolecolor?view=net-7.0
+ 추가로 출력되는 글씨의 자릿수를 맞추고 싶다면
Console.Write({0}, variable);
위의 {0}부분에 {0,3} 식으로 쓴다면 세칸으로 맞춰준다. (빈칸으로 맞춤)
빈 부분에 1을 받았는데 1 이 아니라 001 이런식으로 0으로 채우고 싶다면 {0:D3} 로 바꿔주면 가능하다.
Console.Write({0:D3}, money);
위의 내용들을 활용해 아주 간단한 콘솔 게임을 만들어보자.
4가지 캐릭터중 선택해 스탯을 받게했다.
-> 3자리수로 제한을 둔 뒤 스탯을 띄울때 {0:3} 을 사용해 보기좋게 자리수와 네모칸을 맞춰주었다.
현재 소지금 부분도 5자리수로 고정하고 싶어 {0:D5}를 활용하였으며, 입력한 공격력에 따라 3가지 결과가 나온다.
결론적으로 슬라임의 방어력을 뚫고 죽였다면 베팅한 돈의 3배를 받고, 아니라면 돈을 잃는다.
네모 창에는 cyan, 직업에는 dark blue, 돈 관련은 darkyellow, 슬라임은 green을 넣어 가독성을 좋게 만들었다.
static void Main(string[] args)
{
int character;
int hp;
int mp;
int atk;
int def;
int money = 10000;
int bet;
int slimeHp = 200;
int slimeDef = 500;
string type;
Console.ForegroundColor = ConsoleColor.Cyan;
Console.WriteLine("================================================");
Console.WriteLine("|| 캐릭터를 선택해주세요 ||");
Console.Write("|| ");
Console.ForegroundColor = ConsoleColor.DarkCyan;
Console.Write("1. 용사 2. 법사 3. 도적 4. 성직자");
Console.ForegroundColor = ConsoleColor.Cyan;
Console.WriteLine(" ||");
Console.WriteLine("================================================\n");
Console.ResetColor();
Console.Write(" 캐릭터 선택: ");
character = int.Parse(Console.ReadLine());
if (character == 1)
{
Console.Write("\n------------<");
Console.ForegroundColor = ConsoleColor.DarkCyan;
Console.Write("용사");
Console.ResetColor();
Console.WriteLine("를 선택하셨습니다>-------------");
Console.Write("-----<");
Console.ForegroundColor = ConsoleColor.DarkCyan;
Console.Write("용사");
Console.ResetColor();
Console.WriteLine("의 스탯을 999이내로 입력해주세요>-----\n");
type = "용사";
}
else if (character == 2)
{
Console.Write("\n------------<");
Console.ForegroundColor = ConsoleColor.DarkCyan;
Console.Write("법사");
Console.ResetColor();
Console.WriteLine("를 선택하셨습니다>-------------");
Console.Write("-----<");
Console.ForegroundColor = ConsoleColor.DarkCyan;
Console.Write("법사");
Console.ResetColor();
Console.WriteLine("의 스탯을 999이내로 입력해주세요>-----\n");
type = "법사";
}
else if (character == 3)
{
Console.Write("\n------------<");
Console.ForegroundColor = ConsoleColor.DarkCyan;
Console.Write("도적");
Console.ResetColor();
Console.WriteLine("을 선택하셨습니다>-------------");
Console.Write("-----<");
Console.ForegroundColor = ConsoleColor.DarkCyan;
Console.Write("도적");
Console.ResetColor();
Console.WriteLine("의 스탯을 999이내로 입력해주세요>-----\n");
type = "도적";
}
else if (character == 4)
{
Console.Write("\n-----------<");
Console.Write("성직자");
Console.WriteLine("를 선택하셨습니다>------------");
Console.Write("----<");
Console.Write("성직자");
Console.WriteLine("의 스탯을 999이내로 입력해주세요>----\n");
type = "성직자";
}
else
{
Console.WriteLine(" <잘못된 입력입니다>");
type = "오류";
}
Console.Write(" HP를 입력해주세요: ");
hp = int.Parse(Console.ReadLine());
Console.Write(" MP를 입력해주세요: ");
mp = int.Parse(Console.ReadLine());
Console.Write(" ATK를 입력해주세요: ");
atk = int.Parse(Console.ReadLine());
Console.Write(" DEF를 입력해주세요: ");
def = int.Parse(Console.ReadLine());
Console.ForegroundColor = ConsoleColor.Cyan;
Console.WriteLine("\n================================================");
if (character == 1)
{
Console.Write("|| ");
Console.ForegroundColor = ConsoleColor.DarkCyan;
Console.Write("용사");
Console.ForegroundColor = ConsoleColor.Cyan;
Console.WriteLine("의 스탯 ||");
}
else if (character == 2)
{
Console.Write("|| ");
Console.ForegroundColor = ConsoleColor.DarkCyan;
Console.Write("법사");
Console.ForegroundColor = ConsoleColor.Cyan;
Console.WriteLine("의 스탯 ||");
}
else if (character == 3)
{
Console.Write("|| ");
Console.ForegroundColor = ConsoleColor.DarkCyan;
Console.Write("도적");
Console.ForegroundColor = ConsoleColor.Cyan;
Console.WriteLine("의 스탯 ||");
}
else if (character == 4)
{
Console.Write("|| ");
Console.ForegroundColor = ConsoleColor.DarkCyan;
Console.Write("성직자");
Console.ForegroundColor = ConsoleColor.Cyan;
Console.WriteLine("의 스탯 ||");
}
Console.WriteLine("|| HP: {0:D3} ||", hp);
Console.WriteLine("|| MP: {0:D3} ||", mp);
Console.WriteLine("|| ATK: {0:D3} ||", atk);
Console.WriteLine("|| DEF: {0:D3} ||", def);
Console.Write("|| ");
Console.ForegroundColor = ConsoleColor.DarkYellow;
Console.Write("소지금: 10000G");
Console.ForegroundColor = ConsoleColor.Cyan;
Console.WriteLine(" ||");
Console.WriteLine("================================================\n");
Console.ResetColor();
Console.WriteLine("---------<베팅하실 금액을 입력해주세요>---------\n");
Console.ForegroundColor = ConsoleColor.DarkYellow;
Console.Write("현재 소지금: 10000, 베팅하실 금액: ");
bet = int.Parse(Console.ReadLine());
Console.ResetColor();
if (bet > 10000)
{
Console.WriteLine("\n---------------<금액이 부족합니다>--------------");
}
Console.WriteLine("\n$$$$$$$$$$$$$<베팅이 완료되었습니다>$$$$$$$$$$$$");
money -= bet;
Console.ForegroundColor = ConsoleColor.DarkYellow;
Console.WriteLine("--------------<현재 소지금: {0:D5}G>-------------\n", money);
Console.ResetColor();
Console.WriteLine("================================================");
Console.Write("플레이어가 야생의 ");
Console.ForegroundColor = ConsoleColor.Green;
Console.Write("슬라임");
Console.ResetColor();
Console.WriteLine("을 만났습니다.");
Console.Write("작고 순해보이지만 ");
Console.ForegroundColor = ConsoleColor.Green;
Console.Write("슬라임");
Console.ResetColor();
Console.WriteLine("의 체력은 알 수 없습니다.");
Console.ForegroundColor = ConsoleColor.DarkCyan;
Console.Write(type);
Console.ResetColor();
Console.WriteLine("의 선제공격!");
Console.WriteLine("------------------------------------------------");
if (atk > slimeDef) //공격에 성공
{
Console.ForegroundColor = ConsoleColor.Green;
Console.Write("슬라임");
Console.ResetColor();
Console.WriteLine("의 방어력보다 플레이어의 공격력이 강합니다.");
Console.ForegroundColor = ConsoleColor.Green;
Console.Write("슬라임");
Console.ResetColor();
Console.WriteLine("의 방어력으로 {0}만큼의 데미지를 입었습니다.", atk - slimeDef);
slimeHp -= (atk - slimeDef);
if (slimeHp > 0) //공격은 성공했지만 죽이기에는 실패
{
Console.WriteLine("------------------------------------------------");
Console.ForegroundColor = ConsoleColor.Green;
Console.Write("슬라임");
Console.ResetColor();
Console.Write("의 방어력 때문에 ");
Console.ForegroundColor = ConsoleColor.Green;
Console.Write("슬라임");
Console.ResetColor();
Console.WriteLine("은 온전합니다.");
Console.ForegroundColor = ConsoleColor.Green;
Console.Write("슬라임");
Console.ResetColor();
Console.WriteLine("이 두려움에 떨며 도망갑니다.");
Console.ForegroundColor = ConsoleColor.Green;
Console.Write("슬라임");
Console.ResetColor();
Console.WriteLine("마을에 당신의 괴담이 떠돌기 시작합니다.");
Console.Write("단번에 ");
Console.ForegroundColor = ConsoleColor.Green;
Console.Write("슬라임");
Console.ResetColor();
Console.WriteLine("을 죽이지 못해 베팅에 실패하셨습니다.");
Console.ForegroundColor = ConsoleColor.DarkYellow;
Console.WriteLine("당신의 남은 소지금은 {0}G입니다.", money);
}
else
{
Console.WriteLine("------------------------------------------------");
Console.Write("의외로 단단했던 ");
Console.ForegroundColor = ConsoleColor.Green;
Console.Write("슬라임");
Console.ResetColor();
Console.WriteLine("의 방어력을 뚫었습니다.");
Console.ForegroundColor = ConsoleColor.Green;
Console.Write("슬라임");
Console.ResetColor();
Console.WriteLine("은 쓸쓸하게 죽어갑니다.");
Console.ForegroundColor = ConsoleColor.Green;
Console.Write("슬라임");
Console.ResetColor();
Console.WriteLine("은 당신을 기억할 것입니다...");
Console.ForegroundColor = ConsoleColor.DarkCyan;
Console.Write($"{type}");
Console.ResetColor();
Console.Write($"의 승리입니다. 베팅에 성공하셨습니다.\n");
money += bet * 3;
Console.ForegroundColor = ConsoleColor.DarkYellow;
Console.WriteLine("당신의 남은 소지금은 {0}G입니다.", money);
}
}
else //공격에 실패
{
Console.Write("당신의 공격력이 ");
Console.ForegroundColor = ConsoleColor.Green;
Console.Write("슬라임");
Console.ResetColor();
Console.WriteLine("의 방어력보다 약합니다.");
Console.Write("의외로 단단한 ");
Console.ForegroundColor = ConsoleColor.Green;
Console.Write("슬라임");
Console.ResetColor();
Console.WriteLine("이 당신을 향해 비웃습니다.");
Console.WriteLine("당신은 마음에 상처를 입었습니다.");
Console.Write("단번에 ");
Console.ForegroundColor = ConsoleColor.Green;
Console.Write("슬라임");
Console.ResetColor();
Console.WriteLine("을 죽이지 못해 베팅에 실패하셨습니다.");
Console.ForegroundColor = ConsoleColor.DarkYellow;
Console.WriteLine("당신의 남은 소지금은 {0}G입니다.", money);
}
Console.ResetColor();
Console.WriteLine("================================================\n");
}
'공부 > C#' 카테고리의 다른 글
[C#] 배열, foreach, 셔플 코드와 이를 이용한 예제 및 로또 생성기 (0) | 2023.03.17 |
---|---|
[C#] for문과 break, continue의 사용, 열거형 상수 enum과 예제 (0) | 2023.03.16 |
[C#] switch - case - default문, 난수 random, 반복문 while문 예제; (0) | 2023.03.15 |
[C#] C# 프로그래밍에서의 연산자 우선순위 (0) | 2023.03.14 |
[C#] 연산자의 종류(증감, 관계, 논리, 비트)와 if, else if, else절 (1) | 2023.03.14 |