본문 바로가기
KDT/C# 프로그래밍

23/07/24 인벤토리 복습 (집에서)

by 잰쟁 2023. 7. 25.
728x90

(연습내용 - 출력값)

<인벤토리 내부>
장검
단검

[      ]
[      ]
-------------------------
장검을 꺼냈습니다.
-------------------------
[      ]
단검

[      ]
[      ]
-------------------------

 

 

<Item 클래스>

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

namespace Starcraft
{
    internal class Item
    {

        public string name;
        //생성자 메서드
        public Item(string name)
        {
            this.name = name;
        }
    }
}

<Inventory 클래스>

using System;
using System.Collections.Generic;
using System.Diagnostics.Eventing.Reader;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;

namespace Starcraft
{
    internal class Inventory
    {
        private Item[] items;
        private int capacity;
        private int index;

        //생성자 메서드
        public Inventory(int capacity)
        {
            this.capacity = capacity;
            //아이템을 그룹화, 관리
            items = new Item[this.capacity];
        }

        //아이템 추가
        public void AddItem(Item item)
        {
            int lastIndex = this.capacity - 1;

            if(this.index > lastIndex)
            {
                Console.WriteLine("공간이 부족합니다.");
                return;
            }

            //배열의 index 요소에 값 넣기
            this.items[index] = item;
            index++;
            //Console.WriteLine("=> {0}", item.name);
            //Console.WriteLine("{0},{1}", this.index, lastIndex);
        }

        //모든 아이템 출력
        public void PrintAllItems()
        {
            Console.WriteLine();
            for(int i = 0; i < this.items.Length; i++)
            {
                Item item = this.items[i];
                if (item == null)
                {
                    Console.WriteLine("[   ]");
                }
                else 
                {
                    Console.WriteLine(item.name);
                }

            }
        }

        //아이템 꺼내기
        public Item GetItemByName(string searchItemName)
        {
            Console.WriteLine("searchItemName: {0}",searchItemName);

            Item foundItem = null;

            for(int i = 0; i < this.items.Length; i++)
            {
                Item item = this.items[i];
                if(item != null)
                {
                    Console.WriteLine("item name: {0}", item.name);
                    if(item.name == searchItemName)
                    {
                        this.items[i] = null;
                        foundItem = item;
                        break;
                    }
                }
            }

            return foundItem;

        }
    }
}

 

<App 클래스>

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

namespace Starcraft
{
    internal class App
    {
        //생성자 메서드
        public App()
        {
            Inventory inven = new Inventory(5);
            inven.AddItem(new Item("장검"));
            inven.AddItem(new Item("단검"));
            inven.AddItem(new Item("활"));
            inven.PrintAllItems();
            string searchItemName = "장검";
            Item item = inven.GetItemByName(searchItemName);
            if(item != null)
            {
                Console.WriteLine("{0}을 꺼냈습니다.", item.name);
            }
            else
            {
                Console.WriteLine("{0}을 찾지 못했습니다.",searchItemName);
            }
            inven.PrintAllItems();
            
            
        }
       

    }
}

 

 

Q) Index 사용법 및 아이템 꺼내기(GetItemByName)부분이 어렵습니다...!ㅜ

'KDT > C# 프로그래밍' 카테고리의 다른 글

23/07/25 배열 복습2  (0) 2023.07.25
23/07/25 배열 복습  (0) 2023.07.25
23/07/24 배열 기초 복습 (집에서)  (0) 2023.07.24
23/07/24 인벤토리  (0) 2023.07.24
23/07/24 배열 연습1~3  (0) 2023.07.24