c# 강의/과제

20200420 - List 과제

쪼혀 2020. 4. 20. 21:32

            > 바닥 수량보다 많이 입력시, 바닥 최대수량 획득 후 바닥 아이템 목록에서 제거

 

> 수량 반영

 


> App 생성자

더보기
        List<Item> dropItemList;
        Inventory inventory;


        public App()
        {
            ListApp3();
        }

 

> ListApp3()

더보기
        public void ListApp3()
        {
            this.dropItemList = new List<Item>();

            this.dropItemList.Add(new Item("장검", 10));
            this.dropItemList.Add(new Item("단검", 2));
            this.dropItemList.Add(new Item("활", 5));

            string dropItemName;
            int dropItemAmount;

            this.inventory = new Inventory();

            while (true)
            {
                PrintDropList(dropItemList);
                Console.WriteLine();

                Console.Write("아이템을 획득하려면 명령어를 입력해주세요: ");
                var input = Console.ReadLine();

                string[] cInput = input.Split(' ');

                dropItemName = cInput[0];
                dropItemAmount = int.Parse(cInput[1]);

                GetItemList(dropItemName, dropItemAmount);

                this.inventory.PrintAllItems();

            }
        }

 

> PrintDropList()

더보기
        public void PrintDropList(List<Item> list)
        {

            Console.WriteLine("■■■■■■■■■■■■■■■■■■■■■■■■■■■■");
            Console.WriteLine("길바닥에 떨어져있는 아이템");
            foreach (var item in list)
            {
                if (item != null)
                {
                    Console.WriteLine($"{item.name}, {item.amount}");
                }
            }
            Console.WriteLine("■■■■■■■■■■■■■■■■■■■■■■■■■■■■");
            Console.WriteLine();
        }

 

> GetItemList()

더보기
        public void GetItemList(string dropItemName, int dropItemAmount)
        {
            var findDropitem = this.dropItemList.Find(v => v.name == dropItemName);

            if (findDropitem == null)
            {
                Console.WriteLine(">입력한 아이템은 획득 할 수 없습니다.");
                Console.WriteLine();
                return;
            }

            // 바닥에 있는 수량보다 많이 획득 할 경우
            if (findDropitem.amount <= dropItemAmount)
            {
                Console.WriteLine($"최대 {findDropitem.amount}개 를 획득했습니다.");
                this.inventory.Add(new Item(dropItemName, findDropitem.amount));
                this.dropItemList.Remove(findDropitem);
            }
            else
            {
                this.inventory.Add(new Item(dropItemName, dropItemAmount));
                findDropitem.amount -= dropItemAmount;
            }
        }