C#/수업 과제

List<T> 와 프로퍼티, 상속을 이용한 인벤토리 과제

Bueong_E 2023. 1. 10. 18:07
반응형
SMALL

App 클래스

using System;
using System.Collections;
using System.Collections.Generic;

namespace Study09
{
    class App
    {
        public App()
        {
            Inventory inven = new Inventory(5);
            inven.AddItem(new Weapon("장검"));
            inven.AddItem(new Weapon("장검"));
            inven.AddItem(new Weapon("단검"));
            inven.AddItem(new Weapon("창"));
            inven.AddItem(new Weapon("단검"));

            Console.WriteLine(inven.Count);

            inven.PrintAllItems();
            //장검 x 2
            //단검 x 1

            Console.WriteLine(inven.Count);

            Weapon sword = inven.GetItem("장검");
            Weapon spear = inven.GetItem("창");

            Console.WriteLine(sword.Name);  //장검 

            Console.WriteLine(inven.Count); //2

            inven.PrintAllItems();
            //장검 x 1
            //단검 x 1

            Weapon dagger = inven.GetItem("단검"); //상속을 연습하겠다 하면 Item 아니라면 Weapon 으로 진행
            Console.WriteLine(dagger.Name); //단검 

            Console.WriteLine(inven.Count); //1

            inven.PrintAllItems();
            //장검 x 1

        }
    }
}

인벤토리 클래스

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

namespace Study09
{

    class Inventory
    {
        List<Weapon> weapons;
        public int capacity;
        private int count;
        public int Count
        {
            get
            {
                count = weapons.Count;
                Console.WriteLine("인벤토리에 아이템이 {0} 개 있습니다.", count);
                return count;
            }
            private set
            {
                count = value;
            }
        }
        public Inventory(int capacity)
        {
            this.capacity = capacity;
            this.weapons = new List<Weapon>();
            
        }
        public Weapon AddItem(Weapon name)
        {
            Console.WriteLine("{0}을 인벤토리에 넣었습니다.",name.Name);
            weapons.Add(name);
            return name;
        }
        public void PrintAllItems()
        {
            Console.WriteLine("\n----------인벤토리 목록----------\n");
            foreach(Weapon weapon in weapons)
            {
                Console.WriteLine(weapon.Name);
            }
            Console.WriteLine();
        }
        public Weapon GetItem(string name)
        {
            Weapon wantWeapon = null;
            for(int i =0; i < weapons.Count; i++)
            {
                if(weapons[i].Name == name)
                {
                    Console.WriteLine("{0} 을 찾았습니다.", name);
                    wantWeapon = weapons[i];
                    this.weapons.Remove(weapons[i]);
                    break;
                }                
            }
            return wantWeapon;
        }

    }
}

무기 클래스

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

namespace Study09
{
    
    class Weapon
    {
        public string Name
        {
            get; set;
        }

        public Weapon(string name)
        {
            this.Name = name;
        }
    }
}

결과물

무기를 종류별로 카운트 하는 방법을 좀더 연구해 봐야할듯

 

반응형
LIST