C#/수업내용

03/16 List<T> 를사용한 인벤토리 제작 연습

박준희 2021. 3. 16. 16:23

 

Program.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Study04
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Main");
            new App();
        }
    }
}

 

 

App.cs

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Study04
{
    public class App
    {        
        public App()
        {
            Console.WriteLine("App");

            //List를 사용해서 인벤토리 제작
            Inventory inventory = new Inventory();


            //아이템 삽입
            Console.WriteLine("\n*****************************************************");
            Item item1 = new Item("물약", eRareGrade.Common);
            Item item2 = new Item("장검", eRareGrade.Common);            
            inventory.InsertItem(item1);
            inventory.InsertItem(item2);

            int idx = 1;
            foreach (Item item in inventory.items)
            {
                Console.WriteLine("{0}. {1} {2}",idx, item.rareGrade, item.name);
                idx++;
            }

            //아이템 검색
            Console.WriteLine("\n*****************************************************");
            inventory.SearchItem(item1.name);

            //아이템 삭제
            Console.WriteLine("\n*****************************************************");
            inventory.DeleteItem("장검");

            idx = 1;
            foreach (Item item in inventory.items)
            {
                Console.WriteLine("{0}. {1} {2}", idx, item.rareGrade, item.name);
                idx++;
            }

            //아이템 수정
            Console.WriteLine("\n*****************************************************");
            Item item3 = new Item("알약", eRareGrade.Rare);
            inventory.ModifyItem("물약", item3);

            idx = 1;
            foreach (Item item in inventory.items)
            {
                Console.WriteLine("{0}. {1} {2}", idx, item.rareGrade, item.name);
                idx++;
            }
        }        
    }
}

 

 

Item.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Study04
{
    public enum eRareGrade
    {
        Common,
        Uncommon,
        Rare,
        Unique,
        Legendary,
        Epic
    }    
    public class Item
    {
        public string name;
        public eRareGrade rareGrade;        

        public Item()
        {

        }
        public Item(string name, eRareGrade rareGrade)
        {
            this.name = name;
            this.rareGrade = rareGrade;
        }
    }
}

 

Inventory.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Study04
{
    public class Inventory
    {
        public List<Item> items;
                
        public Inventory()
        {
            items = new List<Item>();
        }

        public void InsertItem(Item item)
        {
            items.Add(item);
            Console.WriteLine("{0} 아이템을 삽입했습니다.", item.name);
        }

        public void SearchItem(string name)
        {
            bool isExist = false;
            foreach(Item item in items)
            {
                if(item.name == name)
                {
                    Console.WriteLine("{0} 아이템이 존재합니다.", name);
                    isExist = true;
                    break;
                }
            }
            if(!isExist)
            {
                Console.WriteLine("아이템이 존재하지 않습니다.");
            }
        }

        public void DeleteItem(string name)
        {
            bool plug = false;
            for(int i = 0; i < items.Count; i++)
            {
                if(items[i].name == name)
                {
                    items.RemoveAt(i);
                    Console.WriteLine("{0} 아이템를 삭제했습니다.", name);
                    plug = true;
                    break;
                }                
            }

            if(!plug)
            {
                Console.WriteLine("아이템이 존재하지 않습니다.");
            }
        }

        public void ModifyItem(string name, Item item2)
        {
            bool plug = false;
            for (int i = 0; i < items.Count; i++)
            {
                if (items[i].name == name)
                {
                    items[i] = item2;
                    Console.WriteLine("아이템을 수정했습니다.");
                    plug = true;
                    break;
                }                
            }
            if (!plug)
            {
                Console.WriteLine("아이템이 존재하지 않습니다.");
            }            
        }
    }
}