
C# 문법 종합반 강의를 제공받아서 주말부터 듣기 시작했다. 일요일에 완강을 했는데, 2주차 후반부 내용부터 어려워지더니 3주차부터는 사실상 내가 한 번에 익힐 수 있는 내용이 아니었다. 주중에 다시 들으면서 복습한다 생각하고 일단 완강을 했는데, 좋은 선택이었던 것 같다. 오늘 3주차 내용까지 빠르게 강의를 돌려보니 어느정도 머릿속에 개념이 잡히기 시작했다. 하지만 여전히 4주차 5주차 내용은 끔찍하다. 하지만 실무에서 많이 활용되는 지식과 개념이라고 하고, 여기서 기초를 다져놔야 이후에 있을 C# 문법 심화 강의나 유니티 활용에 대해 배울 때 막힘이 없을테니 2~3회 듣는 다는 생각으로 집중해야겠다.
오늘 배운 내용 중에 몇가지를 정리해보자면...
// <클래스 구조 기초>
class Person
{
public string Name;
public int Age;
public void PrintInfo()
{
Console.WriteLine("Name: " + Name);
Console.WriteLine("Age: " + Age);
}
}
// 실행 영역
Person p = new Person();
p.Name = "John";
p.Age = 30;
p.PrintInfo(); // 출력: Name: John, Age: 30
위의 클래스에서
public string Name;
public int Age;
이 부분이 필드(클래스에서 사용되는 변수)이고
public void PrintInfo()
{
Console.WriteLine("Name: " + Name);
Console.WriteLine("Age: " + Age);
}
이 부분이 메서드(클래스에서 수행되는 동작)이다.
// 부모 클래스
public class Animal
{
public string Name { get; set; }
public int Age { get; set; }
public void Eat()
{
Console.WriteLine("Animal is eating.");
}
public void Sleep()
{
Console.WriteLine("Animal is sleeping.");
}
}
// 자식 클래스
public class Dog : Animal
{
public void Bark()
{
Console.WriteLine("Dog is bark.");
}
}
public class Cat : Animal
{
public void Sleep()
{
Console.WriteLine("Cat is sleeping.");
}
public void Meow()
{
Console.WriteLine("Cat is meow.");
}
}
// 사용 예시
Dog dog = new Dog();
dog.Name = "Bobby";
dog.Age = 3;
dog.Eat(); // Animal is eating.
dog.Sleep(); // Animal is sleeping.
dog.Bark(); // Dog is barking
Cat cat = new Cat();
cat.Name = "KKami";
cat.Age = 10;
cat.Eat();
cat.Sleep();
cat.Meow();
가상 메서드는 기본적으로 부모 클래스에서 정의되고 자식 클래스에서 재정의 할 수 있는 메서드이다.
public class Unit
{
public virtual void Move()
{
Console.WriteLine("두발로 걷기");
}
public void Attack()
{
Console.WriteLine("Unit 공격");
}
}
public class Marine : Unit
{
}
public class Zergling : Unit
{
public override void Move()
{
Console.WriteLine("네발로 걷기");
}
}
// 사용 예시
// #1 참조형태와 실형태가 같을때
Marine marine = new Marine();
marine.Move();
marine.Attack();
Zergling zergling = new Zergling();
zergling.Move();
zergling.Attack();
// #2 참조형태와 실형태가 다를때
List<Unit> list = new List<Unit>();
list.Add(new Marine());
list.Add(new Zergling());
foreach (Unit unit in list)
{
unit.Move();
}
abstract class Shape
{
public abstract void Draw();
}
class Circle : Shape
{
public override void Draw()
{
Console.WriteLine("Drawing a circle");
}
}
class Square : Shape
{
public override void Draw()
{
Console.WriteLine("Drawing a square");
}
}
class Triangle : Shape
{
public override void Draw()
{
Console.WriteLine("Drawing a triangle");
}
}
List<Shape> list = new List<Shape>();
list.Add(new Circle());
list.Add(new Square());
list.Add(new Triangle());
foreach (Shape shape in list )
{
shape.Draw();
}
public class Shape
{
public virtual void Draw()
{
Console.WriteLine("Drawing a shape.");
}
}
public class Circle : Shape
{
public override void Draw()
{
Console.WriteLine("Drawing a circle.");
}
}
public class Rectangle : Shape
{
public override void Draw()
{
Console.WriteLine("Drawing a rectangle.");
}
}
Shape shape1 = new Circle();
Shape shape2 = new Rectangle();
shape1.Draw(); // Drawing a circle.
shape2.Draw(); // Drawing a rectangle.
public class Calculator
{
public int Add(int a, int b)
{
return a + b;
}
public int Add(int a, int b, int c)
{
return a + b + c;
}
}
Calculator calc = new Calculator();
int result1 = calc.Add(2, 3); // 5
int result2 = calc.Add(2, 3, 4); // 9
프로젝트 명 : 스파르타 던전 (Text 게임) 만들기
위에서 배운 객체와 구조체, 그리고 배열을 활용해 C# - Console App으로 게임을 만들어야 한다.
구현해야 할 목록은 다음과 같다
1. 게임 시작 화면
2. 상태보기
3. 인벤토리
3-1. 장착 관리
4. 상점
4-1. 아이템 구매
선택요구사항
1. 아이템 정보를 클래스 / 구조체로 활용해 보기
2. 아이템 정보를 배열로 관리하기
3. 아이템 추가하기 - 나만의 새로운 아이템을 추가해보기
4. 판매하기 기능 추가
5. 장착 개선
6. 던전입장 기능 추가
7. 휴식기능 추가
8. 레벨업 기능 추가
9. 게임 저장하기 추가
아직은 막막하지만 하나하나 구현하다보면 다 해볼만 한 것 같다.
목요일 18:00이 마감 기한이니까 늦지않게 파이팅!