public class Player
{
public string name = "";
public int level;
private int attack;
}
이렇게 선언되어 있다고 하자.
private로 선언되어있는 attack은 어떻게 접근해야할까?
public int Attack { get; private set; }
위 처럼 attack변수는 프로퍼티라는 것을 선언해서 접근할 수 있다.
get은 값을 가져오는 것.
set은 값을 설정하는 것.
이라고 생각하면 편하다.
public int Attack
{
get
{
return attack;
}
private set
{
attack = value;
}
}
필자는 이 방법을 추천한다.
몬스터 클래스, 플레이어 클래스 생성
플레이어 -> 몬스터 공격
1. 클래스 분리
2. 접근제한자 private로
3. 프로퍼티 사용
한번 만들어보자.
using System;
namespace _260529_2_TestProject
{
public class Player
{
public string name = "";
private int hp;
public int Hp
{
get
{
return hp;
}
private set
{
hp = value;
}
}
private int attack;
public int Attack
{
get
{
return attack;
}
private set
{
attack = value;
}
}
public Player(string _name, int _hp, int _att)
{
name = _name;
Attack = _att;
Hp = _hp;
}
public void HpSet(int _hp)
{
Hp = _hp;
}
public void AttackDamage(int damage)
{
Attack = damage;
}
public void TakeDamage(int damage)
{
Hp -= damage;
}
public void PrintStatus(Player player)
{
Console.WriteLine($"이름 : {player.name}");
Console.WriteLine($"공격력 : {player.Attack}");
Console.WriteLine($"체력 : {player.Hp}");
}
}
}
using System;
namespace _260529_2_TestProject
{
public class Monster
{
public string name = "";
private int hp;
public int Hp
{
get
{
return hp;
}
private set
{
hp = value;
}
}
private int attack;
public int Attack
{
get
{
return attack;
}
private set
{
attack = value;
}
}
public void HpSet(int _hp)
{
Hp = _hp;
}
public void AttackDamage(int damage)
{
Attack = damage;
}
public void TakeDamage(int damage)
{
Hp -= damage;
}
public void PrintStatus(Monster monster)
{
Console.WriteLine($"이름 : {monster.name}");
Console.WriteLine($"공격력 : {monster.Attack}");
Console.WriteLine($"체력 : {monster.Hp}");
}
}
}
using _260529_2_TestProject;
class Program
{
static void Main()
{
//플레이어
Player player = new Player("전사", 100, 10);
player.PrintStatus(player);
Console.WriteLine("------------------------");
//몬스터
Monster monster = new Monster();
monster.name = "오크";
monster.AttackDamage(5);
monster.HpSet(50);
monster.PrintStatus(monster);
Console.WriteLine("------------------------");
//플레이어가 몬스터를 때렸을 때
monster.TakeDamage(player.Attack);
monster.PrintStatus(monster);
Console.WriteLine("------------------------");
}
}