C#/수업 과제
List<T> 와 프로퍼티, 상속을 이용한 인벤토리 과제
Bueong_E
2023. 1. 10. 18:07
반응형
SMALL
App 클래스
using System;
using System.Collections;
using System.Collections.Generic;
namespace Study09
{
class App
{
public App()
{
Inventory inven = new Inventory(5);
inven.AddItem(new Weapon("장검"));
inven.AddItem(new Weapon("장검"));
inven.AddItem(new Weapon("단검"));
inven.AddItem(new Weapon("창"));
inven.AddItem(new Weapon("단검"));
Console.WriteLine(inven.Count);
inven.PrintAllItems();
//장검 x 2
//단검 x 1
Console.WriteLine(inven.Count);
Weapon sword = inven.GetItem("장검");
Weapon spear = inven.GetItem("창");
Console.WriteLine(sword.Name); //장검
Console.WriteLine(inven.Count); //2
inven.PrintAllItems();
//장검 x 1
//단검 x 1
Weapon dagger = inven.GetItem("단검"); //상속을 연습하겠다 하면 Item 아니라면 Weapon 으로 진행
Console.WriteLine(dagger.Name); //단검
Console.WriteLine(inven.Count); //1
inven.PrintAllItems();
//장검 x 1
}
}
}
인벤토리 클래스
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study09
{
class Inventory
{
List<Weapon> weapons;
public int capacity;
private int count;
public int Count
{
get
{
count = weapons.Count;
Console.WriteLine("인벤토리에 아이템이 {0} 개 있습니다.", count);
return count;
}
private set
{
count = value;
}
}
public Inventory(int capacity)
{
this.capacity = capacity;
this.weapons = new List<Weapon>();
}
public Weapon AddItem(Weapon name)
{
Console.WriteLine("{0}을 인벤토리에 넣었습니다.",name.Name);
weapons.Add(name);
return name;
}
public void PrintAllItems()
{
Console.WriteLine("\n----------인벤토리 목록----------\n");
foreach(Weapon weapon in weapons)
{
Console.WriteLine(weapon.Name);
}
Console.WriteLine();
}
public Weapon GetItem(string name)
{
Weapon wantWeapon = null;
for(int i =0; i < weapons.Count; i++)
{
if(weapons[i].Name == name)
{
Console.WriteLine("{0} 을 찾았습니다.", name);
wantWeapon = weapons[i];
this.weapons.Remove(weapons[i]);
break;
}
}
return wantWeapon;
}
}
}
무기 클래스
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study09
{
class Weapon
{
public string Name
{
get; set;
}
public Weapon(string name)
{
this.Name = name;
}
}
}
결과물
무기를 종류별로 카운트 하는 방법을 좀더 연구해 봐야할듯
반응형
LIST