어제 TIL에 개인 과제에 대한 회고만을 작성했었다. 이유는 코드를 짜는데 진짜 전혀 진전이 없었기 때문이다. 어제의 나는 class가 어떻게 생긴지만 알고 있었지 그것을 활용할 줄을 전혀 몰랐다. 오늘 그거에 관련하여 튜터님께 물어보았고 나의 문제점을 찾을 수 있었다.
생성자
이 생성자가 문제였다. 튜터님께 물어보았을 때 어느정도까지는 잘 되었는데 생성자에서 막힌 것이다. class Item을 만들고 아이템들의 관련하여 class안에 변수를 넣어보라고 하셔서 처음에는 진짜 public int sword 이렇게 만들고 그랬다. 근데 애초부터 틀린 시도였던 것이다. 내가 생성자를 공부할 때 시큰둥하게 넘어갔기 때문에 알리가 없었다. 그래서 튜터님께서 생성자부분 다시한번 보고오라고 하셔서 다시한번 보고왔다.
public class Item
{
public string Name;
public int Price;
public int Attack;
public int Defence;
public int ItemType;
public bool PurchaseItem = false;
public bool EquipmentItem = false;
public string Text;
public Item(string newName, int newPrice, int weaponAttack, int armorDefence, int itemType, string newText)
{
Name = newName;
Price = newPrice;
Attack = weaponAttack;
Defence = armorDefence;
ItemType = itemType;
Text = newText;
}
}
이 부분이었다. 나는 생성자를 만들어서 하라고 했을 때 생성자를 전혀 몰라서 저 코드처럼 만들 생각을 아예 못하였다. 그랬기때문에 진행이 안되었고 낙담해있었던 것이다. 생성자는 객체를 초기화하고 초기값을 넣어주는 역할을 하는데 초기값을 넣을 방법을 모르니 item목록들에 어떻게 가격, 방어력, 공격력, 이름 등등을 넣을 수 있겠는가!
현재 코드를 보면 Item(이름, 가격, 공격력, 방어력, 아이템유형, 아이템설명)들을 담으면 저 변수들에 저장이 되는 것이다. 그렇게 만든 리스트들이
shopInventory.Add(new Item("낡은 검", 600, 2, 0, 1, "쉽게 볼 수 있는 낡은 검 입니다."));
shopInventory.Add(new Item("청동 도끼", 1500, 5, 0, 1, "어디선가 사용됐던거 같은 도끼입니다."));
shopInventory.Add(new Item("스파르타의 창", 3000, 7, 0, 1, "스파르타의 전사들이 사용했다는 전설의 창입니다."));
shopInventory.Add(new Item("수련자의 갑옷", 1000, 0, 5, 0, "수련에 도움을 주는 갑옷입니다."));
shopInventory.Add(new Item("무쇠갑옷", 2000, 0, 7, 0, "무쇠로 만들어져 튼튼한 갑옷입니다."));
shopInventory.Add(new Item("스파르타의 갑옷", 3500, 0, 15, 0, "스파르타의 전사들이 사용했다는 전설의 갑옷입니다."));
이것들이다 우선 게임을 시작할 때 상점에 아이템을 먼저 넣어야하기 때문에 게임스타트 부분에 이 것들을 선언해두어서 아이템에 정보를 담아두었다. 그리고나서
foreach (Item item in shopInventory)
{
Console.WriteLine($"{item.Name} | 공격력 +{item.Attack} | 방어력 +{item.Defence} | {item.Text} | {s}");
}
이런식으로 foreach문을 선언하여 상점목록에 이름과 가격 등등을 올릴 수 있게되었다.
놀랍게도 생성자를 한번 깨닫고 나서 그뒤로 어느정도 술술 풀렸다. class부분을 아예 건드리지 못했어서 많이 답답했던 것이었는데 생성자를 알고 이용해보니 속이 뻥 뚤렸었다. 내가 너무 늦게 깨달아서 과제 제출이 오늘 저녁 6시였기에 완성은 못했지만 어느정도 구현은 해둔 상태로 제출할 수 있었다. 아직 덜 완성된 부분은 내일 9시까지 완성해서 재제출을 하라고 하셔서 과제에 대해 해설 올라온 것을 분석 하고 익혀서 코드 조금 보안하고 내일 시간에 맞춰서 제출하면 될 것 같다.
회고
처음으로 코딩하는데 시원함,뿌듯함 을 느낀 것 같다. 여태 나 혼자서 막 끙끙 앓고 그러다가 어제 같은 TIL을 쓰게 되었는데 오늘 그 막힌게 튜터님께 물어보러갔을때 나의 문제점을 바로 알아서 바로 뚫렸고 너무 감사했다. 나의 문제점은 모르는데 질문할 용기가 없었고, 공부할 때도 어느정도 알았다고 생각하고 바로 넘어간 점이 나의 최대 문제였던 것 같다. 이런 점 고쳐가면서 포기하지않고 꾸준하게 하면 코딩 잘하는 사람이 될 수 있다고 굳게 믿는다.