Console.Write("당신은 나이를 입력하세요: ");
string age = Console.ReadLine();
Console.Write("당신의 이름을 입력하세요: ");
string name = Console.ReadLine();
Console.WriteLine($"당신의 이름은 {name}이며 나이는 {age}입니다,");
Console.write()는 cmd에 ""안에 있는 문자를 출력해주는 기능이다.
write가 아닌 writeLine으로 변경하면 해당 문자 출력 후 줄 바꿈처리까지 해주는 기능이다.
Console.ReadLine()은 키보드로 입력하여 데이터를 저장하는 기능이다. 해당 기능은 string타입으로 받을 수 있으며 키보드가 입력한 내용을 해당 변수에 저장한다.
Console.Write("첫번째 숫자: ");
string firstString = Console.ReadLine();
Console.Write("두번째 숫자: ");
string secondString = Console.ReadLine();
int firstInt = int.Parse(firstString);
int secondInt = int.Parse(secondString);
// 다른 방법 1
Console.WriteLine("다른 방법 1");
Console.WriteLine("두 수의 합 결과는: {0}", firstInt + secondInt);
Console.WriteLine("두 수의 빼기 결과는: {0}", firstInt - secondInt);
Console.WriteLine("두 수의 곱셉 결과는: {0}", firstInt * secondInt);
Console.WriteLine("두 수의 나누기 결과는: {0}", firstInt / secondInt);
Console.WriteLine("-----------------------------------------------------");
// 다른 방법 2
Console.WriteLine("다른 방법 1");
string str1 = string.Format("두 수의 합 결과는: {0}", firstInt + secondInt);
string str2 = string.Format("두 수의 빼기 결과는: {0}", firstInt - secondInt);
string str3 = string.Format("두 수의 곱셉 결과는: {0}", firstInt * secondInt);
string str4 = string.Format("두 수의 나누기 결과는: {0}", firstInt / secondInt);
Console.WriteLine(str1);
Console.WriteLine(str2);
Console.WriteLine(str3);
Console.WriteLine(str4);
Console.WriteLine("-----------------------------------------------------");
// 다른 방법 3
Console.WriteLine("다른 방법 2");
Console.WriteLine($"두 수의 합 결과는: {firstInt + secondInt}");
Console.WriteLine($"두 수의 빼기 결과는: {firstInt - secondInt}");
Console.WriteLine($"두 수의 곱셉 결과는: {firstInt * secondInt}");
Console.WriteLine($"두 수의 나누기 결과는: {firstInt / secondInt}");
Console.WriteLine을 사용할때 변수를 추가할 때 사용하는 방법으로 방법은 3가지로
1. {0}를 ""안에 추가하고 끝난 뒤 ,를 붙여서 {0}안에 들어갈 변수를 추가하는 방법
2. string.Format()으로 Console.WriteLine처럼 추가한 뒤 변수로 저장하고 따로 출력하는 방법
3. ""앞에 $를 추가하여 {}안에 해당 변수를 그대로 넣어서 사용하는 방법이다.
Console.Write("섭씨 온도를 입력하세요: ");
float Celsius = float.Parse(Console.ReadLine());
Console.WriteLine($"입력한 섭씨의 온도는 {Celsius}°C이며 화씨 온도는" +
$"{(Celsius * 9 / 5) + 32}°F 입니다.");
위에서 사용한 문자 보간 3번의 방법을 이용하여 $를""앞에 붙여서 {}안에 해당 변수를 추가하고 다른 {}에는 연산도 포함하여 출력을 한 것이다.
Console.Write("당신의 키(M)를 입력해주세요: ");
float height = float.Parse(Console.ReadLine());
Console.Write("당신의 몸무게(KG)를 입력해주세요: ");
float weight = float.Parse(Console.ReadLine());
Console.WriteLine($"당신의 BMI 수치는 {Math.Round(weight / Math.Pow(height, 2), 2)}입니다.");
3번과 큰 차이가 없지만 Math.Pow(height, 2)그리고 Math.Round()를 사용하였는데
1. Math.Pow()의 기능은 1번째 매개변수 height를 2번째 매개변수 2만큼 제곱해주겠다는 뜻이다.
2. Math.Round()의 기능은 1번째 매개변수에 반올림할 변수 명을 2번째 매개변수에 소수 점자리에서 반올림하겠다는 뜻이다.
3. 버림: Truncate / 올림: Ceiling도 있으니 참고 해야겠다.
struct Info
{
public int level = 1; // 레벨
public string chad; // 직업
public int str; // 공격력
public int def; // 방어력
public int hp; // 체력
public int gold; // 골드
// 구조체 생성 시 기본 정보 등록
public Info()
{
level = 1;
chad = "초보자";
str = 0;
def = 0;
hp = 10;
gold = 0;
}
}
구조체가 아직 정보가 필요하므로 일단 틀만 잡아두고 넘어가겠음
struct equipment
{
public string name; // 장비 이름
public string equipType; // 장비 타입 정보(공격력, 방어력)
public string introduct; // 장비 소개
public bool choice; // 장비 타입 선택
public bool equipCheck; // 장비 착용 여부
public bool buyCheck; // 장비 구매 여부
public int vaule; // 스탯 수치
public int gold; // 장비 가격
public equipment(string name, bool choicem, int value, string introduct, int gold)
{
this.name = name;
this.choice = choicem;
this.vaule = value;
this.equipCheck = false;
this.introduct = introduct;
this.gold = gold;
// 장비 능력에서 방어력과 공격력 선택
if (choice)
{
equipType = "공격력";
}
else
{
equipType = "방어력";
}
}
}
장비를 처음 생성할 때 장비의 정보를 입력하여 저장하게 함
// 선택지(계속 실행)
static void Select(Info playerInfo, equipment[] equipments)
{
Console.WriteLine("-----------------------------------------");
Console.WriteLine("1. 상태 보기");
Console.WriteLine("2. 인벤토리");
Console.WriteLine("3. 상점");
Console.Write("원하시는 행동을 입력해주세요:");
string str = Console.ReadLine();
Console.WriteLine("-----------------------------------------\n");
int num;
Console.WriteLine();
// 입력한 값이 1, 2, 3에 따라 실행이 되고 그 외값이 나오면 잘못된 선택지 라고 출력 후 다시 실행
if (int.TryParse(str, out num))
{
switch (num)
{
case 1:
InfoShow(playerInfo);
break;
case 2:
Inventory(playerInfo);
break;
case 3:
Shop(playerInfo, equipments);
break;
default:
Console.WriteLine("잘못된 선택지 입니다. 다시 입력해주세요!");
Select(playerInfo, equipments);
break;
}
}
else
{
Console.WriteLine("잘못된 선택지 입니다. 다시 입력해주세요!");
Select(playerInfo, equipments);
}
}
먼저 상태, 인벤토리, 상점에 숫자를 출력하여 플레이어가 어느 곳에 갈 것인지 ReadLine으로 string str에 정보를 입력 받음
int.TryParse(str, out num)를 이용하여 str이 int로 변경이 가능한지 판단을 하고 변경이 되면 switch문으로 이용하요 1~3번 또는 그 외에 값을 설정하여 이동 가능하게 하고 다시 선택하게 만듬 또 else로 int로 변경이 안되는 str의 경우 다시 선택지를 선택하게 다시 Select()를 실행하게 함
// 아이템 생성
static equipment[] CreatItem(equipment[] equipments)
{
// 무기
equipments[0] = new equipment("나무 검", true, 2, "마을의 어린이들이 연습용으로 사용하는 검이다.", 100);
equipments[1] = new equipment("녹슨 검", true, 4, "아직 쓸모있지만 언제 부숴질지 모르는 검이다.", 500);
equipments[2] = new equipment("철퇴", true, 7, "짧지만 그만큼 힘이 뭉쳐있다고 전해지는 몽둥이다.", 1500);
equipments[3] = new equipment("철 검", true, 10, "웬만한 모험가들은 들수도 없이 무거운 검이다.", 3000);
equipments[4] = new equipment("엑스칼리버", true, 20, "적의 침략에 맞서라 지킬 힘을 줄테니", 7777);
// 방어구
equipments[5] = new equipment("천갑옷", false, 3, "처음 모험을 떠나는 모험가들의 기본 갑옷이다.", 300);
equipments[6] = new equipment("철갑옷", false, 5, "숙련된 모험가들이 착용하는 철로 만든 갑옷이다.", 1000);
equipments[7] = new equipment("판금갑옷", false, 10, "나라의 한손가락의 강함을 가진 모험가의 갑옷이다.", 3000);
equipments[8] = new equipment("영광의 판금갑옷", false, 15, "두려워하는 전사는 반드시 패할것이니", 10000);
// 악세사리
equipments[9] = new equipment("반지", false, 5, "손가락뿐만 아니라 몸 전체를 보호해준다는 반지다.", 10000);
equipments[10] = new equipment("귀걸이", false, 10, "누군가 만든지는 모르지만 사용자의 몸을 보호해주는 귀걸이다.", 20000);
equipments[11] = new equipment("목걸이", true, 5, "예뻐보이지만 착용한 사람의 힘을 증폭시켜주는 목걸이다.", 7000);
equipments[12] = new equipment("벨트", true, 10, "허리를 보호해줄것 같지만 몸이 건강해지는 벨트다.", 15000);
return equipments;
}
아이템 구조체인 equipment를 배열[]로 만들어 1개씩 정보를 저장 함
// 플레이어의 정보 출력
static void InfoShow(Info PlayerInfo)
{
Console.WriteLine("-------------------------------");
Console.WriteLine("상태 보기");
Console.WriteLine("캐릭터의 정보가 표시됩니다.");
Console.WriteLine($"LV. {PlayerInfo.level}");
Console.WriteLine($"Chad ({PlayerInfo.chad})");
Console.WriteLine($"공격력: {PlayerInfo.str}");
Console.WriteLine($"방어력: {PlayerInfo.def}");
Console.WriteLine($"체 력: {PlayerInfo.hp}");
Console.WriteLine($"Gold: {PlayerInfo.gold}G");
Console.WriteLine("-------------------------------\n");
}
// 게임 첫 시작 텍스트
static void FirstText()
{
Console.WriteLine("-------------------------------");
Console.WriteLine("스파르타 마을에 오신 여러분 환영합니다.");
Console.WriteLine("이곳에서 던전으로 들어가기전 활동을 할 수 있습니다.");
Console.WriteLine("-------------------------------\n");
}
// 인벤토리
static void Inventory(Info playerInfo)
{
Console.WriteLine("-------------------------------");
Console.WriteLine("인벤토리");
Console.WriteLine("보유 중인 아이템을 관리할 수 있습니다.");
Console.WriteLine("[아이템 목록]");
Console.WriteLine("-------------------------------\n");
}
아직 추가할 부분으로 일단 Console.WriteLine()을 이용하기만 함
// 상점
static void Shop(Info playerInfo, equipment[] equipments)
{
Console.WriteLine("-------------------------------");
Console.WriteLine("상점");
Console.WriteLine("필요한 아이템을 얻을 수 있는 상점입니다.");
Console.WriteLine("[보유 골드]");
Console.WriteLine(playerInfo.gold + "G");
Console.WriteLine("[아이템 목록]");
foreach (equipment equipment in equipments)
{
string buyText = true == equipment.buyCheck ? "구매완료" : equipment.gold.ToString();
Console.WriteLine($"- {equipment.name} | {equipment.equipType} +{equipment.vaule} | {equipment.introduct} | {buyText}");
}
Console.WriteLine("-------------------------------\n");
}
static void Main(string[] args)
{
Info playerInfo = new Info();
equipment[] equipments = new equipment[13]; // 상점의 장비
equipment[] playerEquipments = new equipment[13]; // 플레이어의 장비
// 아이템 생성
CreatItem(equipments);
// 첫 시작
FirstText();
while (true)
{
Select(playerInfo, equipments);
}
}
제일 처음 시작하는 부분으로 플레이어 정보와 아이템 정보인 구조체를 new로 각자 변수에 저장하고 아이템을 먼저 생성한 다음 첫 시작 Text까지 출력하게 함 그 다음 선택지의 연속 임으로 무한의 기능인 While()를 이용하여 Select()를 계속 실행되게 함