-
03/15 배열 선언, 인스턴스 생성, 할당, 출력 연습 7-1C#/수업내용 2021. 3. 15. 16:54
아이템 넣기, 빼기, 검색, 목록 출력이 가능한 인벤토리 구현
미구현
-
아이템 배열 빈공간 정렬아이템 배열 빈공간 문제 개선 Program.cs
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Study03 { class Program { static void Main(string[] args) { Console.WriteLine("Main"); new App(); } } }
App.cs
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Study03 { public class App { public App() { Inventory inventory = new Inventory(10); int selectNum = 0; while(true) { Console.WriteLine("조작을 선택해주세요. 아이템 넣기(1), 아이템 빼기(2), 아이템 검색(3), 아이템 목록 출력(4)"); int.TryParse(Console.ReadLine(), out selectNum); switch(selectNum) { case 1: { string itemName; Console.WriteLine("아이템의 이름을 입력해주세요."); itemName = Console.ReadLine(); inventory.AddItem(new Item(itemName, SetItemType())); break; } case 2: { string itemName; Console.WriteLine("아이템의 이름을 입력해주세요."); itemName = Console.ReadLine(); inventory.GetItem(itemName); break; } case 3: { string itemName; Console.WriteLine("아이템의 이름을 입력해주세요."); itemName = Console.ReadLine(); inventory.FindItem(itemName); break; } case 4: { inventory.Print(); break; } default: break; } } } public static Item.eItemType SetItemType() { int selectNum; Item.eItemType itemType = 0; Console.WriteLine("아이템 타입을 입력해주세요. 1 : Weapon, 2 : Armor, 3 : Accessories, 4 : Portion"); int.TryParse(Console.ReadLine(), out selectNum); switch(selectNum) { case 1: itemType = Item.eItemType.Weapon; break; case 2: itemType = Item.eItemType.Armor; break; case 3: itemType = Item.eItemType.Accessories; break; case 4: itemType = Item.eItemType.Portion; break; default: break; } return itemType; } } }
Inventory.cs
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Study03 { public class Inventory { private Item[] items; private int capacity; public Inventory() { } public Inventory(int capacity) { this.capacity = capacity; this.items = new Item[capacity]; } public void AddItem(Item item) { int idx = 0; for( ; idx < capacity; idx++) { if(items[idx] ==null) { items[idx] = item; Console.WriteLine("{0} 아이템을 넣었습니다.", item.GetName()); break; } } if(idx == capacity) { Console.WriteLine("인벤토리에 공간이 부족합니다."); } } public Item GetItem(string itemName) { Item item = null; for (int i = 0; i < capacity; i++) { if (items[i] != null && items[i].GetName() == itemName) { item = items[i]; Console.WriteLine("{0} 아이템을 뺐습니다.", item.GetName()); items[i] = null; break; } } if(item == null) { Console.WriteLine("해당하는 아이템이 없습니다."); } return item; } public bool FindItem(string itemName) { bool findItem = false; for (int i = 0; i < capacity; i++) { if (items[i] != null && items[i].GetName() == itemName) { Console.WriteLine("{0} 아이템을 찾았습니다.", itemName); findItem = true; break; } } if(!findItem) { Console.WriteLine("{0} 아이템을 찾지 못했습니다.", itemName); } return findItem; } public void Print() { Item[] tmp = new Item[capacity]; int idx = 0; foreach(Item item in items) { if(item != null) { tmp[idx] = item; idx++; } } items = tmp; int index = 1; foreach(Item item in items) { if(item!=null) { Console.WriteLine("{0}. {1} {2}",index, item.GetName(), item.GetItemType()); } else { Console.WriteLine("{0}.", index); } index++; } } } }
Item.cs
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Study03 { public class Item { public enum eItemType { Weapon, Armor, Accessories, Portion } private string name; private eItemType itemType; public Item() { } public Item(string name, eItemType itemType) { this.name = name; this.itemType = itemType; } public string GetName() { return this.name; } public void SetName(string name) { this.name = name; } public eItemType GetItemType() { return this.itemType; } public void SetItemType(eItemType itemType) { this.itemType = itemType; } } }
'C# > 수업내용' 카테고리의 다른 글
03/15 수업내용 메모 (0) 2021.03.15 03/15 배열 선언, 인스턴스 생성, 할당, 출력 연습 7-2 (0) 2021.03.15 03/15 배열 선언, 인스턴스 생성, 할당, 출력 연습 5 (0) 2021.03.15 03/15 배열 선언, 인스턴스 생성, 할당, 출력 연습 4 (0) 2021.03.15 03/15 배열 선언, 인스턴스 생성, 할당, 출력 연습 3 (0) 2021.03.15