class App
{
Dictionary<int, ItemData> dicItemDatas = new Dictionary<int, ItemData>();
Dictionary<int, MonsterData> dicMonsterDatas = new Dictionary<int, MonsterData>();
public App()
{
ItemData itemData0 = new ItemData(100, "장검", 5);
ItemData itemData1 = new ItemData(101, "단검", 3);
ItemData itemData2 = new ItemData(102, "활", 3.5f);
ItemData itemData3 = new ItemData(103, "지팡이", 2.3f);
dicItemDatas.Add(100, itemData0);
dicItemDatas.Add(101, itemData1);
dicItemDatas.Add(102, itemData2);
dicItemDatas.Add(103, itemData3);
Item item = this.CreateItem(102);
Console.WriteLine("{0} {1} {2}", item.data.id, item.data.name, item.data.damage);
MonsterData monsterData0 = new MonsterData(1000, "코볼트", 100);
MonsterData monsterData1 = new MonsterData(1001, "오크전사", 102);
MonsterData monsterData2 = new MonsterData(1002, "슬라임", 104);
dicMonsterDatas.Add(1000, monsterData0);
dicMonsterDatas.Add(1001, monsterData1);
dicMonsterDatas.Add(1002, monsterData2);
Monster monster = this.CreateMonster(1000);
Console.WriteLine("{0} {1} {2}", monster.data.id, monster.data.name, monster.data.reward);
monster.Die();
int rewardItemId = this.dicMonsterDatas[monster.data.id].reward;
ItemData rewardItemData = this.dicItemDatas[rewardItemId];
Item rewardItem = new Item(rewardItemData);
Console.WriteLine("{0} {1} {2}", rewardItem.data.id, rewardItem.data.name, rewardItem.data.damage);
}
private Monster CreateMonster(int id)
{
MonsterData data = dicMonsterDatas[id];
Monster monster = new Monster(data);
return monster;
}
private Item CreateItem(int id)
{
ItemData data = dicItemDatas[id];
Item item = new Item(data);
return item;
}
}
struct ItemData
{
public int id;
public string name;
public float damage;
public ItemData(int id, string name, float damage)
{
this.id = id;
this.name = name;
this.damage = damage;
}
}
class Item
{
public ItemData data;
public Item(ItemData data)
{
this.data = data;
Console.WriteLine("{0}이 생성되었습니다.", data.name);
}
}
class MonsterData
{
public int id;
public string name;
public int reward;
public MonsterData(int id, string name, int reward)
{
this.id = id;
this.name = name;
this.reward = reward;
}
}
class Monster
{
public MonsterData data;
public Monster(MonsterData data)
{
this.data = data;
Console.WriteLine("{0}가 생성되었습니다.", data.name);
}
public void Die()
{
Console.WriteLine("{0}가 죽었습니다.", this.data.name);
}
}
class App
{
Dictionary<int, ItemData> dicItemDatas = new Dictionary<int, ItemData>();
Dictionary<int, MonsterData> dicMonsterDatas = new Dictionary<int, MonsterData>();
Inventory inventory = new Inventory();
public App()
{
ItemData itemData0 = new ItemData(100, "장검", 5);
ItemData itemData1 = new ItemData(101, "단검", 3);
ItemData itemData2 = new ItemData(102, "활", 3.5f);
ItemData itemData3 = new ItemData(103, "지팡이", 2.3f);
dicItemDatas.Add(100, itemData0);
dicItemDatas.Add(101, itemData1);
dicItemDatas.Add(102, itemData2);
dicItemDatas.Add(103, itemData3);
Item item = this.CreateItem(102);
Console.WriteLine("{0} {1} {2}", item.data.id, item.data.name, item.data.damage);
inventory.InsertItem(item);
item = null;
MonsterData monsterData0 = new MonsterData(1000, "코볼트", 100);
MonsterData monsterData1 = new MonsterData(1001, "오크전사", 102);
MonsterData monsterData2 = new MonsterData(1002, "슬라임", 104);
dicMonsterDatas.Add(1000, monsterData0);
dicMonsterDatas.Add(1001, monsterData1);
dicMonsterDatas.Add(1002, monsterData2);
Monster monster = this.CreateMonster(1000);
Console.WriteLine("{0} {1} {2}", monster.data.id, monster.data.name, monster.data.reward);
monster.Die();
int rewardItemId = this.dicMonsterDatas[monster.data.id].reward;
ItemData rewardItemData = this.dicItemDatas[rewardItemId];
Item rewardItem = new Item(rewardItemData);
Console.WriteLine("{0} {1} {2}", rewardItem.data.id, rewardItem.data.name, rewardItem.data.damage);
inventory.InsertItem(rewardItem);
rewardItem = null;
}
private Monster CreateMonster(int id)
{
MonsterData data = dicMonsterDatas[id];
Monster monster = new Monster(data);
return monster;
}
private Item CreateItem(int id)
{
ItemData data = dicItemDatas[id];
Item item = new Item(data);
return item;
}
}
class Inventory
{
private List<Item> space = new List<Item>();
public Inventory()
{
}
public void InsertItem(Item item)
{
Console.WriteLine("{0}을 가방에 넣었습니다.", item.data.name);
space.Add(item);
for(int i=0; i<space.Count; i++)
{
Console.WriteLine("현재 가방에 있는 아이템: {0}.{1}", i + 1, space[i].data.name);
}
}
}