(1) Item.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LearnDotnet
{
internal class Item
{
public string ItemName { get; set; }
public Item(string ItemName)
{
this.ItemName = ItemName;
}
}
}
(2) Inventory.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LearnDotnet
{
internal class Inventory
{
int capacity;
Item[] items;
int index=-1;
public Inventory(int capacity)
{
this.capacity = capacity;
items = new Item[this.capacity];
}
public void AddItem(Item item)
{
this.items[++index] = item;
}
public Item GetItemByName(string name)
{
Item getItem = null;
int getItemIndex = -1;
for (int i=0; i <= index; i++)
{
if (name == items[i].ItemName)
{
getItem = this.items[i];
this.items[i] = null;
getItemIndex = i;
break;
}
}
//꺼낸 아이템이 존재할 경우 인벤토리 다시 정렬
if(getItemIndex >= 0)
{
for(int i = getItemIndex; i < this.index; i++)
{
items[i] = items[i + 1];
}
items[index--] = null;
}
return getItem;
}
public void PrintAllItems()
{
for(int i=0;i< this.items.Length; i++)
{
if (items[i] != null)
Console.WriteLine(this.items[i].ItemName);
else Console.WriteLine("[ ]");
}
}
}
}
(3)App.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http.Headers;
using System.Runtime.InteropServices;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
namespace LearnDotnet
{
internal class App
{
//생성자
public App()
{
Inventory inven = new Inventory(5);
inven.AddItem(new Item("장검"));
inven.AddItem(new Item("단검"));
inven.AddItem(new Item("활"));
inven.AddItem(new Item("도끼"));
inven.AddItem(new Item("글러브"));
inven.PrintAllItems();
string searchName = "단검";
Item item = inven.GetItemByName(searchName);
if(item != null )
{
Console.WriteLine("{0}을 꺼냈습니다.", item.ItemName);
}
else
{
Console.WriteLine("{0}을 찾을수 없습니다.", searchName);
}
inven.PrintAllItems();
}
}
}
결과
-번외
(1) inventory.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LearnDotnet
{
internal class Inventory
{
int capacity;
Item[] items;
int index=-1;
public Inventory(int capacity)
{
this.capacity = capacity;
items = new Item[this.capacity];
}
public void AddItem(Item item)
{
if (this.index < capacity-1)
this.items[++index] = item;
else Console.WriteLine("인벤토리가 가득찼습니다. 더이상 {0}을 저장할 수 없습니다.", item.ItemName);
}
public Item GetItemByName(string name)
{
Item getItem = null;
int getItemIndex = -1;
for (int i=0; i <= index; i++)
{
if (name == items[i].ItemName)
{
getItem = this.items[i];
this.items[i] = null;
getItemIndex = i;
break;
}
}
//꺼낸 아이템이 존재할 경우 인벤토리 다시 정렬
if(getItemIndex >= 0)
{
for(int i = getItemIndex; i < this.index; i++)
{
items[i] = items[i + 1];
}
items[index--] = null;
}
return getItem;
}
public void PrintAllItems()
{
for(int i=0;i< this.items.Length; i++)
{
if (items[i] != null)
Console.WriteLine(this.items[i].ItemName);
else Console.WriteLine("[ ]");
}
}
}
}
(2) App.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http.Headers;
using System.Runtime.InteropServices;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
namespace LearnDotnet
{
internal class App
{
//생성자
public App()
{
Inventory inven = new Inventory(5);
inven.AddItem(new Item("장검"));
inven.AddItem(new Item("단검"));
inven.AddItem(new Item("활"));
inven.AddItem(new Item("도끼"));
inven.AddItem(new Item("글러브"));
inven.AddItem(new Item("신발"));
inven.PrintAllItems();
string searchName = "단검";
Item item = inven.GetItemByName(searchName);
if(item != null )
{
Console.WriteLine("{0}을 꺼냈습니다.", item.ItemName);
}
else
{
Console.WriteLine("{0}을 찾을수 없습니다.", searchName);
}
inven.PrintAllItems();
}
}
}
결과
'K-digital traning > C#프로그래밍' 카테고리의 다른 글
배열 연습 (0) | 2023.07.25 |
---|---|
1차원 배열 인벤토리 (0) | 2023.07.25 |
스타크래프트 - 마린, 저글링, 메딕 (0) | 2023.07.24 |
반복문 for (0) | 2023.07.20 |
Input, enum 활용 (0) | 2023.07.20 |