C#/수업 내용

[C#] 2021-09-03 Dictionary 연습

JSH1 2021. 9. 3. 17:59
    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);
            }
        }
    }

 

'C# > 수업 내용' 카테고리의 다른 글

[C#] try/catch 예외 및 예외 처리  (0) 2021.09.06
[C#] 2021-09-06 Dictionary 인벤토리  (0) 2021.09.06
[C#] HashTable  (0) 2021.09.03
[C#] 2021-09-02 Queue 연습문제  (0) 2021.09.03
[C#] 2021-09-02 Stack 연습문제  (0) 2021.09.02