C#/수업 내용

[C#] 2021-09-06 Dictionary 인벤토리

JSH1 2021. 9. 6. 13:01
    class App
    {
        public static Dictionary<int, ItemData> dicItemDatas = new Dictionary<int, ItemData>();

        public App()
        {
            ItemData data0 = new ItemData(100, "장검", 5f);
            ItemData data1 = new ItemData(101, "단검", 3.4f);
            ItemData data2 = new ItemData(102, "활", 4f);
            ItemData data3 = new ItemData(103, "창", 5.3f);
            ItemData data4 = new ItemData(104, "지팡이", 3f);
            dicItemDatas.Add(data0.id, data0);
            dicItemDatas.Add(data1.id, data1);
            dicItemDatas.Add(data2.id, data2);
            dicItemDatas.Add(data3.id, data3);
            dicItemDatas.Add(data4.id, data4);

            Inventory inventory = new Inventory();

            inventory.AddItem(new Item(dicItemDatas[100]));
            inventory.AddItem(new Item(dicItemDatas[101], 2));
            inventory.AddItem(new Item(dicItemDatas[102], 2));
            inventory.AddItem(new Item(dicItemDatas[102], 1));
            inventory.PrintItems();

            Item foundItem = inventory.GetItem(100);
            if (foundItem != null)
            {
                Console.WriteLine("찾은 아이템의 id : {0}", foundItem.data.name);
            }

            inventory.GetItem(100);
            inventory.PrintItems();
        }
    }
    class 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 int amount;

        public Item(ItemData data)
        {
            this.data = data;
            this.amount = 1;
        }

        public Item(ItemData data, int amount)
        {
            this.data = data;
            this.amount = amount;
        }
    }
    class Inventory
    {
        private List<Item> list = new List<Item>();

        public int Count
        {
            get
            {
                return list.Count;
            }
        }

        public Inventory()
        {

        }

        public void AddItem(Item item)
        {
            for(int i=0;i<this.list.Count; i++)
            {
                if (this.list[i].data.id == item.data.id)
                {
                    list[i].amount += item.amount;
                    Console.WriteLine("아이템[{0}]이 {1}개 추가 되어 {2}개가 되었습니다.", item.data.name, item.amount, this.list[i].amount);
                    return;
                }
            }

            this.list.Add(item);
            Console.WriteLine("아이템[{0}]이 {1}개 추가 되었습니다.", item.data.name, item.amount);
        }

        public Item GetItem(int id)
        {
            Item item = null;

            for (int i = 0; i < this.list.Count; i++)
            {
                if (this.list[i].data.id == id)
                {
                    item = this.list[i];
                    this.list.Remove(this.list[i]);
                    Console.WriteLine("{0}을 가방에서 가져왔습니다.", item.data.name);
                    return item;
                }
            }

            Console.WriteLine("가방에 {0}이 존재하지 않습니다.", App.dicItemDatas[id].name);
            return null;
        }

        public void PrintItems()
        {
            Console.WriteLine();
            foreach (Item item in this.list)
            {
                Console.WriteLine("{0} {1} x {2}", item.data.id, item.data.name, item.amount);
            }
        }

    }

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

[C#] Delegate 대리자  (0) 2021.09.06
[C#] try/catch 예외 및 예외 처리  (0) 2021.09.06
[C#] 2021-09-03 Dictionary 연습  (1) 2021.09.03
[C#] HashTable  (0) 2021.09.03
[C#] 2021-09-02 Queue 연습문제  (0) 2021.09.03