Inventory.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study04
{
public class Inventory
{
private Item[] items;
private int nextIndex;
// 생성자
public Inventory(int capacity)
{
this.items = new Item[capacity];
}
public void AddItem(Item item)
{
if (this.nextIndex > this.items.Length-1)
{
Console.WriteLine("공간이 부족합니다.");
}
else
{
this.items[this.nextIndex++] = item;
}
}
public void Extend(int capacity)
{
int len = this.items.Length + capacity;
Item[] temp = new Item[len];
for (int i = 0; i < this.items.Length-1; i++) {
temp[i] = this.items[i];
}
this.items = temp;
}
public void FindName()
{
for (int i = 0; i < this.items.Length; i++)
{
if (this.items[i] != null)
{
Console.WriteLine(this.items[i].Name);
}
}
}
public Item GetItem(string itemName)
{
Item getItem = null;
for (int i = 0; i < this.items.Length; i++)
{
if (this.items[i] != null)
{
if (this.items[i].Name != itemName)
{
Console.WriteLine("{0} 아이템을 찾을 수 없습니다.", itemName);
}
else
{
getItem = this.items[i];
Console.WriteLine("{0}을 사용합니다.", getItem.Name);
break;
}
}
}
return getItem;
}
}
}
Item.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study04
{
public class App
{
Inventory inven = null;
Item items = null;
// 생성자
public App()
{
Console.Write("인벤토리의 최대 수량을 입력하세요.");
string input = Console.ReadLine();
int maxNum = Convert.ToInt32(input);
inven = new Inventory(maxNum);
Console.WriteLine(inven);
while (true)
{
Console.WriteLine("숫자를 입력하세요.");
Console.WriteLine("<1. 아이템 넣기, 2. 아이템 빼기, 3. 인벤토리 최대 수량 변경 4. 나가기>");
string inputNum = Console.ReadLine();
int num = Convert.ToInt32(inputNum);
if (num == 1)
{
Console.Write("아이템 이름을 입력하세요.: ");
string inputItem = Console.ReadLine();
this.items = new Item(inputItem);
inven.AddItem(this.items);
}
else if (num == 2)
{
Console.Write("사용할 아이템 이름을 입력하세요.: ");
string inputItem = Console.ReadLine();
this.items = inven.GetItem(inputItem);
}
else if (num == 3)
{
Console.WriteLine("추가할 수량을 입력하세요.: ");
string inputItem = Console.ReadLine();
int number = Convert.ToInt32(inputItem);
inven.Extend(number);
Console.WriteLine("인벤토리 총 수량: {0}", maxNum + number);
}
else if (num == 4)
{
Console.WriteLine("인벤토리를 나갑니다.");
break;
}
else
{
Console.WriteLine("잘못된 입력입니다.");
}
}
}
}
}
App.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study04
{
public class App
{
Inventory inven = null;
Item items = null;
// 생성자
public App()
{
Console.Write("인벤토리의 최대 수량을 입력하세요 -> ");
string input = Console.ReadLine();
int maxNum = Convert.ToInt32(input);
inven = new Inventory(maxNum);
while (true)
{
Console.WriteLine("\n");
Console.WriteLine("숫자를 입력하세요");
Console.WriteLine("<1. 아이템 넣기, 2. 아이템 빼기, 3. 인벤토리 최대 수량 변경 4. 나가기>");
string inputNum = Console.ReadLine();
int num = Convert.ToInt32(inputNum);
if (num == 1)
{
Console.Write("아이템 이름을 입력하세요 -> ");
string inputItem = Console.ReadLine();
this.items = new Item(inputItem);
inven.AddItem(this.items);
}
else if (num == 2)
{
Console.Write("사용할 아이템 이름을 입력하세요 -> ");
string inputItem = Console.ReadLine();
this.items = inven.GetItem(inputItem);
}
else if (num == 3)
{
Console.WriteLine("추가할 수량을 입력하세요 -> ");
string inputItem = Console.ReadLine();
int number = Convert.ToInt32(inputItem);
inven.Extend(number);
Console.WriteLine("인벤토리 총 수량: {0}", maxNum + number);
}
else if (num == 4)
{
Console.WriteLine("인벤토리를 나갑니다.");
break;
}
else
{
Console.WriteLine("잘못된 입력입니다.");
}
}
}
}
}
'C# > 수업 내용' 카테고리의 다른 글
2차원 배열 맵타일 (0) | 2022.06.15 |
---|---|
2048 왼쪽 이동 (0) | 2022.06.15 |
22.06.14 - property, get-set메서드, interface (0) | 2022.06.14 |
22.06.10 - 상수, enum, 형식 변환, var, 값 형식/참조 형식, if-else, 논리 연산자, for, break/continue (0) | 2022.06.10 |
22.06.09 - 여러 타입의 변수 정의 및 초기화, 출력 실습 (0) | 2022.06.10 |