팀원분들과 오전에 Visual Studio 단축키에 대해 대화를 나누다가. 편리한 기능을 많이 알게 되었다. 단축키를 활용하여 코딩 시간을 단축 시킬 수 있을거 같다.
C# 공부를 시작하며 벨로그에 학습 내용들을 정리해두어서 복기하기 쉬웠다.
반복적으로 복기 하다보면 같은 내용이어도 복기 할때마다 새로운 지식을 얻는 것 같다. 이전에는 제대로 이해하지 못하고 넘어갔던 부분을 다시 공부하게 되서 그런듯 하다.
어려웠던 인터페이스, 상속, 클래스 객체화에 대한 개념은 어느정도 완료되었다.
아직 4주차 강의에 있는 델리게이트, 람다, out, ref 등 고급 문법은 활용 할 수 있는 정도로 습득하진 못했지만, 대략적인 기능 이해는 완료 했다.
어제 실습해보고자 했던 캡슐화 해보기를 개인 과제였던 TextRPG의 유저 클래스를 수정해서 구현해보았다. 구현 중 의문사항이 생겼는데 이건 내일 튜터님께 여쭤볼 계획이다.
{
// ------------------ 캐릭터 인터페이스 공통 ------------------
string _name; // 이름
string _tribe; // 종족
int _health; // HP
int _attackDamage; // 공격력
bool _isDead; // 생존여부
// 캐릭터 인터페이스 필드의 프로퍼티들
public String Name { get { return _name; } private set { _name = value; } }
public String Tribe { get { return _tribe; } private set { _tribe = value; } }
public int Health { get { return _health; } private set { _health = value; } }
public int AttackDamage { get { return _attackDamage; } private set { _attackDamage = value; } }
public bool IsDead { get { return _isDead; } private set { _isDead = value; } }
public void TakeDamage(int damage)
{
}
// ------------------ 유저 인터페이스 공통 ------------------
string _userClass; // 직업
int _level; // 레벨
int _defensPower; // 방어력
int _gold; // 골드
int _clearCount; // 던전 클리어 횟수
int _equipArmorStatusNum; // 장착 갑옷 상태수치
int _equipWeaponStatusNum; // 장착 갑옥 상태수치
// 유저 인터페이스 필드의 프로퍼티들
public string UserClass { get { return _userClass; } private set { _userClass = value; } } // 직업
public int Level { get { return _level; } private set { _level = value; } } // 레벨
public int DefensPower { get { return _defensPower; } private set { _defensPower = value; } } // 방어력
public int Gold { get { return _gold; } private set { _gold = value; } } // 골드
public int ClearCount { get { return _clearCount; } private set { _clearCount = value; } } // 던전 클리어 횟수
public int EquipArmorStatusNum { get { return _equipArmorStatusNum; } private set { _equipArmorStatusNum = value; } } // 장착 갑옷 상태수치
public int EquipWeaponStatusNum { get { return _equipWeaponStatusNum; } private set { _equipWeaponStatusNum = value; } } // 장착 갑옷 상태수치
// ------------------ 유저 고유 ------------------
//public event AttackHandle OnAttack; // 공격 델리게이트 트리거
public void UserAttack(int Attack) // 유저가 공격할때
{
//OnAttack?.Invoke(Attack); // 공격 델리게이트 트리거 - 몬스터의 TakeDamage와 묶임
}
// 유저 이름 입력 메소드
public void InputName(string inputName)
{
this.Name = inputName;
}
// 유저 클래스(직업) 입력 메소드
public void InputUserClass(string inputUserClass)
{
this.UserClass = inputUserClass;
}
// 유저 방어구 방어력 입력 메소드
public void InputEquipArmorStatusNum(int equipArmorStatusNum)
{
this.EquipArmorStatusNum = equipArmorStatusNum;
}
// 유저 무기 공격력 입력 메소드
public void InputEquipWeaponStatusNum(int equipWeaponStatusNum)
{
this.EquipWeaponStatusNum = equipWeaponStatusNum;
}
// 상태창 메소드
public void State(User user)
{
bool exit = false;
while (!exit)
{
Console.Clear();
Console.WriteLine("[상태보기]");
Console.WriteLine("캐릭터의 정보가 표시됩니다.");
Console.WriteLine();
Console.WriteLine("레 벨 : {0} Lv", user.Level);
Console.WriteLine("직 업 : {0}", user.UserClass);
Console.WriteLine("방어력 : {0} (+ {1})", user.DefensPower, user.EquipArmorStatusNum);
Console.WriteLine("공격력 : {0} (+ {1})", user.AttackDamage, user.EquipWeaponStatusNum);
Console.WriteLine("체 력 : {0}", user.Health);
Console.WriteLine("골 드 : {0} G", user.Gold);
Console.WriteLine();
Console.WriteLine("0. 나가기");
Console.WriteLine();
Console.WriteLine("원하시는 행동을 입력해주세요.");
Console.Write(">> ");
int select = InputCheck.Check(0, 0);
switch (select)
{
case 0:
exit = true;
break;
default:
continue;
}
}
}
public User()
{
this.Name = "홍길동";
this.Tribe = "인간";
this.Health = 100;
this.AttackDamage = 10;
this.IsDead = false;
this.UserClass = "없음";
this.Level = 1;
this.DefensPower = 10;
this.Gold = 1500;
this.ClearCount = 0;
this.EquipArmorStatusNum = 0; // 장착 갑옷 상태수치
this.EquipWeaponStatusNum = 0; // 장착 갑옷 상태수치
}
}
interface ICharacter
{
public String Name { get; } // 이름
public String Tribe { get; } // 종족
public int Health { get; } // HP
public int AttackDamage { get; } // 공격력
public bool IsDead { get; } // 생존여부
public void TakeDamage(int damage); // HP 차감 함수
}
internal interface IUser
{
public string UserClass { get; } // 직업
public int Level { get; } // 레벨
public int DefensPower { get; } // 방어력
public int Gold { get; } // 골드
public int ClearCount { get; } // 던전 클리어 횟수
public int EquipArmorStatusNum { get; } // 장착 갑옷 상태수치
public int EquipWeaponStatusNum { get; } // 장착 갑옷 상태수치
}