C#/수업 과제

배열을 활용한 인벤토리 구현

HSH12345 2023. 1. 6. 21:03
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _230106
{
    class App
    {
        public App()
        {
            Inventory inventory = new Inventory();
            inventory.AddItem(new Item("장검"));
            inventory.AddItem(new Item("단검"));
            inventory.AddItem(new Item("활"));
            inventory.AddItem(new Item("도끼"));
            inventory.AddItem(new Item("지팡이"));
            inventory.AddItem(new Item("지팡이"));
            inventory.AddItem(new Item("도끼"));

            inventory.PrintItems();

            Console.WriteLine();

            inventory.FindItemByName("장검");
            inventory.FindItemByName("메이스");
            inventory.FindItemByName("활");
            inventory.FindItemByName("망치");

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

namespace _230106
{
    class Inventory
    {
        public Item[] items;
        int index;

        public Inventory()
        {
            this.items = new Item[5];
        }

        public void AddItem(Item item)
        {
            if (index >= items.Length)
            {
                Console.WriteLine("인벤토리가 가득 찼습니다.");
            }
            else
            {
                this.items[index] = item;
                index++;
                Console.WriteLine("인벤토리에 추가하였습니다. ({0})", item.name);
            }
        }

        public void PrintItems() //for문으로 items들의 요소 출력
        {
            Console.WriteLine("\n아이템 목록\n");
            for (int i = 0; i < items.Length; i++)
            {
                if (items[i] != null)
                {
                    Console.WriteLine(items[i].name);
                }
            }
        }

        public Item FindItemByName(string name) //문자열 이름으로 아이템을 찾기
        {
            Item finditem = null;

            for (int i = 0; i < items.Length; i++)
            {
                if (items[i].name == name)
                {
                    finditem = items[i];
                    Console.WriteLine("{0}을 보유하고 있습니다", name);
                    break;
                }
                else if (i == items.Length - 1 && items[i].name != name) 
                {
                    Console.WriteLine("{0}을 보유하고 있지않습니다", name);
                }               
            }
            return finditem;
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _230106
{
    class Item
    {
        public string name;

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

 

 

Inventory 클래스의 FindItemByName 클래스에서 Item(참조)형식의 값을 왜 반환해야하는지 궁금