C#/수업내용

0614 인벤토리

버스창문 2022. 6. 14. 13:00
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace study04
{
    public class Inventory
    {
        Item[] inven;
        int position = 0;
        public Inventory(int a)
        {
            this.inven = new Item[a];
            Console.WriteLine("{0}칸 인벤토리 생성", a);
        }
        public Item GetItem(string name)
        {
            for (int i = 0; i < this.inven.Length; i++)
            {
                if (this.inven[i].Name == name)
                {
                    

                    Console.WriteLine("아이템을 빼냈습니다.");
                    if (this.inven[i].Count > 1)
                    {
                        this.inven[i].Count--;
                        return new Item(name);
                    }
                    else
                    {
                        this.position--;
                        this.inven[i] = null;
                        for (; i < inven.Length - 1; i++)
                        {
                            inven[i] = inven[i + 1];
                            inven[i + 1] = null;
                        }
                        return new Item(name);
                    }
                }
            }
            Console.WriteLine("그런 아이템은 없습니다.");
            return null;

        }
        public void PutItem(Item item)
        { 
            for(int i = 0; i < inven.Length; i++)
            {
                if ((this.inven[i] != null)&&this.inven[i].Name == item.Name)
                {
                    this.inven[i].Count++;
                    return;
                }
                
            }
            if (position >= inven.Length)
            {
                Console.WriteLine("가방이 가득 찼습니다.");
                return;
            }
            this.inven[position] = item;
            this.inven[position].Count++;
            this.position++;
        }
        public void Print()
        {
            int a = 0;
            while (this.inven[a] != null)
            {
                Console.WriteLine("{0} x {1}", this.inven[a].Name, this.inven[a].Count);
                a++;
                if(a == this.inven.Length)
                {
                    break;
                }
            }
        }
        public void Expansion(int a)
        {
            Item[] temp = new Item[this.inven.Length + a];
            int i = 0;
            while (this.inven[i] != null)
            {
                temp[i] = inven[i];
                i++;
                if (i == this.inven.Length)
                {
                    break;
                }
            }
            this.inven = temp;
        }
    }
}

인벤토리 클래스

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

namespace study04
{
    public class Item
    {
        private string name;
        public string Name
        {
            get { return this.name; }
            set { this.name = value; }
        }
        public int Count
        {
            get; set;
        }
        public Item(string name)
        {
            this.name = name;
        }

        
    }
}

아이템 클래스

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

namespace study04
{
    public class App {
        
    
    public App()
        {
            Inventory items = new Inventory(3);
            items.PutItem(new Item("장검"));
            items.PutItem(new Item("단검"));
            items.PutItem(new Item("쌍검"));
            items.PutItem(new Item("쌍검"));
            items.PutItem(new Item("쌍검"));
            items.PutItem(new Item("쌍검"));
            items.PutItem(new Item("쌍검"));
            items.PutItem(new Item("종"));
            items.PutItem(new Item("말"));
            items.PutItem(new Item("탄"));
            items.PutItem(new Item("식"));
            items.PutItem(new Item("의"));
            items.PutItem(new Item("노"));
            items.PutItem(new Item("래"));


            items.Print();

            Item item = items.GetItem("활");
            item = items.GetItem("쌍검");

            items.Print();

            //Console.WriteLine(item.Name);

            items.Expansion(5);
            items.PutItem(new Item("종"));
            items.PutItem(new Item("말"));
            items.PutItem(new Item("탄"));
            items.PutItem(new Item("식"));
            items.PutItem(new Item("의"));
            items.PutItem(new Item("노"));
            items.PutItem(new Item("래"));

            items.Print();
        }
        
    }
}

코드

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

0621  (0) 2022.06.21
0620 몬스터 잡고 아이템 얻고 인벤토리에 저장  (0) 2022.06.20
0615 늑대 마구마구 때리기  (0) 2022.06.15
0614 / 2048 만들기  (0) 2022.06.14
늑대때리기  (0) 2022.06.10