static void Main(string[] args) { Inven NewInven = new Inven(5, 3); Item NewItem1 = new Item("철검", 100); Item NewItem2 = new Item("천갑옷", 100); Item NewItem3 = new Item("바나나", 100); //이제 인벤에 아이템을 넣고 싶다. NewInven.AddItem(NewItem1); NewInven.AddItem(NewItem2); NewInven.AddItem(NewItem3); NewInven.AddItem(new Item("파란포션", 100), 5); // 알아서 처리해줄거라는 생각 자체를 하지 말라. // 방어 코드를 설계!! while (true) { // 이런 객체간의 구조를 만들 때 약간 도움이 될만한 규칙들. solid. // SOLID : 객체지향 개발 5대 원리. // 1. 단일책임의 원칙 // 2. 개방폐쇄 // 3. 어쩌구 치환 // 4. 인터페이스 분리 // 이거 말할라고. // 5. 의존성역젼 // // 인터페이스 분리원칙은 // ex) 함수를 잘개 쪼개서 만든다음에 // 그 잘게 쪼갠 함수들을 조합해서 새 기능을 만들어 내라. 예 : get(), set(), Damage() 등등 NewInven.Render(); NewInven.Select(); } }
static public void ExchangeItem(Inven <ItemType> _Costomer, Inven <ItemType> _Seller, int _ItemIndex) // 일단 GOLD 없이. { // 인자값과 반환값으로밖에 메소드끼리 소통하지 못한다는게 아쉽다. _Costomer.AddItem(_Seller.GetItem(_ItemIndex)); _ItemIndex = 10; _Seller.DeleteItem(_ItemIndex); }
static STARTSELECT Town(Player _Player) { // shopinven 이라는 인벤토리를 만들어줌. Inven <Item> ShopInven = new Inven <Item>(5, 5); ShopInven.AddItem(new Item("철검", 500), 1); ShopInven.AddItem(new Item("천갑옷", 300), 2); ShopInven.AddItem(new Item("돌칼", 300), 4); ShopInven.AddItem(new Item("녹슨 도끼", 350), 5); ShopInven.AddItem(new Item("빨간 포션", 50), 6); ShopInven.AddItem(new Item("파란 포션", 30), 10); ShopInven.AddItem(new Item("뭔가 수상한 지팡이", 50), 13); ShopInven.AddItem(new Item("천갑옷", 300), 16); ShopInven.AddItem(new Item("돌칼", 300), 20); ShopInven.AddItem(new Item("녹슨 도끼", 350), 21); ShopInven.AddItem(new Item("빨간 포션", 50), 22); ShopInven.AddItem(new Item("파란 포션", 30), 24); ShopInven.AddItem(new Item("파란 포션", 30), 25); while (true) { Console.Clear(); _Player.StatusRender(); Console.WriteLine("\n마을에서 무엇을 하시겠습니까?"); Console.WriteLine("1.여관에 들려 체력을 회복한다."); Console.WriteLine("2.대장관에 들른다."); Console.WriteLine("3.상점에 들른다."); Console.WriteLine("4.마을을 나간다.\n"); switch (Console.ReadKey().Key) { case ConsoleKey.D1: Inn(_Player); break; case ConsoleKey.D2: break; case ConsoleKey.D3: Shop(_Player, ShopInven); break; case ConsoleKey.D4: Console.WriteLine(""); Console.WriteLine("마을을 나갑니다.\n"); Console.ReadKey(); // 함수의 분기. // 함수의 통합. // 객체를 선언해야 될 때 이 세개가 초반 프로그래밍의 전부. return(STARTSELECT.NONESELECT); // 나간다. default: break; } } }