이번 주는 C# 문법에 대한 강의를 들으면서 개인프로젝트를 진행할 예정이에요.
그래서 TIL은 강의를 듣고 제가 잘 몰랐던 부분에 대해서 정리하려고 합니다.
1주차 강의에서는 C#에 대한 간단한 설명과 변수와 자료형, 연산자와 문자열 처리에 대한 내용이었어요.
C# 언어는 마이크로소프트에서 만든 객체지향 프로그래밍 언어로 안전하고, 형식이 분명한게 특징이에요.
"강력한 형식 시스템"과 "가비지 컬렉션 기능"을 제공하고 다양한 플랫폼에서 사용이 가능하며,
.NET 프레임워크에서 실행되고 C, C++, Java 등 다른 언어들과 문법 및 구조적으로 유사해요.
- 강력한 형식시스템은 변수나 객체의 자료형이 미리 정의되어 있어 데이터 타입에 대한 안전성과 정확성을 보장하는 시스템을 말해요.
- 가비지 컬렉션 기능은 동적 할당된 메모리를 자동으로 회수해주는 기능이에요.
C#에서는 개발자가 메모리를 직접 할당하고 해제하는 대신, .NET 프레임워크에서 가비지 수집기가 자동으로 메모리를 해제해줘요.
.NET 프레임워크는 마이크로소프트에서 개발한 프로그래밍 플랫폼으로, 다양한 프로그래밍 언어를 지원하며, 개발자가 손쉽게 애플리케이션을 개발할 수 있도록 도와주는 플랫폼이에요.
C#에서 콘솔 출력은 Console.WriteLine 와 Console.Write 메소드를 사용해요.
Console.WriteLine(value);
Console.Write(value);
다음과 같이 사용하는데 value값에는 출력할 값이 들어가는데 문자열, 숫자, 변수, 연산식 등 어떤 값이든 사용할 수 있어요.
WriteLine메소드는 인수로 전달된 값을 출력하고 줄바꿈 문자열을 추가해주고, Write메소드는 줄바꿈 문자열을 추가해주지 않아요.
\키를 사용하여 특수문자를 삽입할 수 있습니다.| 이스케이프 시퀀스 | 설명 |
|---|---|
\' | 작은따옴표(') 삽입 |
\" | 큰따옴표(") 삽입 |
\\ | 역슬래시(\) 삽입 |
\n | 줄바꿈 삽입 |
\r | 현재 줄 맨 앞으로 이동 |
\t | 탭 삽입 |
\b | 백스페이스 삽입 |
ex)
Console.WriteLine("Hello\nWorld");
// 출력결과
// Hello
// World
Console.WriteLine("Name\tAge");
Console.WriteLine("Kero\t30");
Console.WriteLine("Young\t25");
// 출력결과
// Name Age
// Kero 30
// Young 25
Console.WriteLine("We learn \"C# Programming\"");
// 출력결과
// The book is called "C# Programming"
Console.WriteLine("He said, \'Hello\' to me.");
// 출력결과
// He said, 'Hello' to me.
Console.WriteLine("C:\\MyDocuments\\Project\\");
// 출력결과
// C:\MyDocuments\Project\
콘솔 입력을 받기 위해서는 Console.ReadLine 을 사용해요.
string input = Console.ReadLine();
다음과 같이 사용하는데 사용자가 입력한 문자열을 문자열로 반환하여 input 변수에 값을 저장해주는 코드입니다.
C# 3.0부터 사용가능한 변수로 var키워드를 사용하여 변수를 선언하면 변수의 자료형이 컴파일러에 의해 자동으로 결정되는데요.
초기화하는 값의 자료형에 따라 변수의 자료형이 결정되는 것이에요.
예를 들어, 다음과 같이 변수를 선언할 수 있어요.
var num = 10; // int 자료형으로 결정됨
var name = "kero"; // string 자료형으로 결정됨
var pi = 3.141592; // double 자료형으로 결정됨
var키워드를 사용하면 변수를 선언할 때에 초기화하는 값의 자료형에 따라 변수의 자료형이 결정되므로, 변수를 선언하는 시점에서 변수의 자료형을 정확히 알 수 없는 경우에 유용하게 사용할 수 있어요.
이번주차 개인프로젝트는 텍스트RPG 게임 만들기예요.
오늘 진행한 부분은 게임시작화면과 플레이어의 상태를 보여주는 화면을 제작했어요.

static int StartScene()
{
Console.WriteLine();
Console.WriteLine("스파르타 마을에 오신 여러분을 환영합니다.");
Console.WriteLine("이곳에서 던전으로 들어가기전 활동을 할 수 있습니다.");
Console.WriteLine();
Console.WriteLine("1. 상태 보기"); ;
Console.WriteLine("2. 인벤토리");
Console.WriteLine("3. 상점");
Console.WriteLine();
Console.WriteLine("원하시는 행동을 입력해주세요.");
Console.Write(">> ");
int choice = int.Parse(Console.ReadLine());
return choice;
}
먼저 게임 시작화면을 보여줄 StartScene() 함수를 만들었어요.
유저가 원하는 행동을 입력받아 int형으로 변환한뒤 반환해줍니다.
static void Main(string[] args)
{
while (true)
{
int choice;
choice = StartScene();
switch (choice)
{
case 1:
break;
case 2:
break;
case 3:
break;
default:
Console.WriteLine("잘못된 행동입니다.");
Console.WriteLine();
break;
}
}
}
메인 함수에서 StartScene() 에서 반환 받은 값으로 스위치문으로 조건을 걸어 각각의 창으로 넘어갈 수 있도록 했습니다.
1~3 외의 숫자를 누르게 된다면 "잘못된 행동입니다" 라는 문구를 출력하며 다시 시작창으로 돌아가요.



struct Status
{
public int level;
public string nickname;
public int attack;
public int defense;
public int hp;
public int gold;
public void ShowStatus()
{
Console.WriteLine("LV. " + level);
Console.WriteLine(nickname);
Console.WriteLine("공격력 : " + attack);
Console.WriteLine("방어력 : " + defense);
Console.WriteLine("체력 : " + hp);
Console.WriteLine("Gold : " + gold + " G");
}
}
우선 플레이어의 상태를 저장해줄 구조체를 만들어 주고 정보들을 출력해줄 ShowStatus() 함수를 만들어줬습니다.
저는 플레이어의 닉네임을 유저에게 입력받게 하려고 Login() 함수를 만들어줬어요.
static void Login()
{
Console.WriteLine("캐릭터를 생성합니다.");
Console.Write("닉네임을 입력해주세요: ");
string name = Console.ReadLine();
status.level = 1;
status.nickname = name;
status.attack = 10;
status.defense = 5;
status.hp = 100;
status.gold = 1500;
}
유저에게 닉네임을 받은 후에 플레이어의 상태를 초기화 해줘요.
그리고 상태를 보여줄 StatusScene() 함수를 만들었습니다.
static void StatusScene()
{
Console.WriteLine("상태 보기");
Console.WriteLine("캐릭터의 정보가 표시됩니다.");
status.ShowStatus();
Console.WriteLine();
Console.WriteLine("0. 나가기");
while (true)
{
Console.WriteLine();
Console.WriteLine("원하시는 행동을 입력해주세요.");
Console.Write(">> ");
int choice = int.Parse(Console.ReadLine());
if (choice == 0) break;
else
{
Console.WriteLine("잘못된 행동입니다.");
}
}
}
메인 함수에서 반복문이 시작하기 전에 Login() 함수를 호출하고 반복문 안의 스위치문의 상태보기 조건에 StatusScene() 함수를 넣어줍니다.
static void Main(string[] args)
{
Login();
while (true)
{
int choice;
choice = StartScene();
switch (choice)
{
case 1:
StatusScene();
break;
case 2:
break;
case 3:
break;
default:
Console.WriteLine("잘못된 행동입니다.");
Console.WriteLine();
break;
}
}
}




강의를 듣고 이해하고 복습하고 개인 프로젝트까지 진행하려니 시간이 너무 부족한 느낌이네요.
최대한 시간을 짜내서 놓치는 것 없이 한 주를 마무리 할 수 있도록 노력해보겠습니다.