본문 바로가기
게임 개발 일지/내일배움캠프 TIL

TextRPG - Gold, Inventory 불러오기 / 좋은 개발자의 태도

by 빛하_ 2023. 11. 20.

 

 

팀 프로젝트 - Text 게임 [스파르타 던전] 개발

 

문제 1. player 이름, player 골드 불러오기

 

 

상점 창에서 위처럼   [(player.name)의 Gold] : (player.Gold) G  를 표기하고 싶은데,

솔루션 파일이 여러 개의 클래스로 나누어져 있다보니 어디서 가지고 와야할까 고민했었다.

Player.cs 에서 직접 가지고 오려고 했더니 오류가 떴고,

name 과 gold 메서드를 가진 Character 클래스에서도 가져올 수 없었다.

 

정답은..?

Name 과 Gold 를 들고 있는 건 Player1 이다.

Player1은 누구냐?

Player를 관리하기 위해 PlayerManager를 만들었다.

최상위 클래스인 Program에서 public static Player player1 으로 선언함으로써 

PlayerManager 에서 player1 을 사용할 수 있게 된다.

Player 는 Character 클래스가 가진 메서드를 상속받기 때문에

우리는 name, gold와 같은 데이터를 Program.player1을 통해서 가져올 수 있다.

Console.Clear();
ShowHighlightedText("상점 - 구매");
Console.WriteLine("[상점 주인 아만다] : 우리 물건이 제일 좋다구!");
Console.WriteLine("[" + Program.player1.Name + "의 Gold]" + " : " + Program.player1.Gold + " G\n");
Console.WriteLine();
Console.WriteLine("0. 나가기");
Console.WriteLine("1. 무기 구매");
Console.WriteLine("2. 방어구 구매");
Console.WriteLine("3. 물약 구매");

 

 

문제2. Store 에서 player1의 inventory 데이터 가져오기

 

Store.cs에서 player1의 inventory를 확인하고 싶은데, Inventory.Item 형식으로는 가져와지지 않았다.

문제1과 같은 방법으로, inventory를 가지고 있는 건 누구인가? 를 생각했다.

Program.player1.Inventory 를 사용했고, weaponItem이 List로 정리되어 있기 때문에

Contains 와 Add 를 사용함으로써 해결할 수 있었다.

 

한 가지 문제는, 가져오고 싶은 대상이 public으로 열려있어야 한다는 것!

해당 클래스에서 접근 권한을 열어야 다른 클래스로 불러올 수 있다.

else
{
  if (Program.player1.Inventory.weaponItem.Contains(StoreWeapon[input - 1])) // 인벤토리에 아이템이 있는지 확인
  {
   Console.WriteLine("이미 구매한 아이템입니다.");
  }
   else if (Program.player1.Gold >= StoreWeapon[input - 1].Gold)
     {
     Program.player1.Gold -= StoreWeapon[input - 1].Gold;
     Program.player1.Inventory.weaponItem.Add((WeaponItem)StoreWeapon[input - 1]); // 구매한 아이템을 인벤토리에 넣어주기
     Console.WriteLine("구매하는 중.. 잠시만 기다려주세요.");
     Thread.Sleep(1000);
     StoreBuyWeapon();
     }
     else if (Program.player1.Gold < StoreWeapon[input - 1].Gold)
     {
      Console.WriteLine("Gold가 부족합니다.");
     }
}

 

 

 

특강 - 좋은 개발자 되는 방법 

 

1) 메타인지 챙겨! : 내가 뭘 모르는 지 아는 것이 중요하다.

2) 배운 것을 잊어버리지 않게 기록하는 것도 중요하다!

3) 번아웃은 방지하는 것! : 내일 무리하지 않도록 오늘 일을 오늘 끝내자.

4) 진심으로 개발하는 개발자? : 기능을 넘어 서비스를 개발하는 사람. 확장성/성능 테스트/트러블슈팅 까지 고려하는.

5) 개발자의 커뮤니케이션은 겸손한 자세가 필수적이다.

6) 살아있는 코드를 작성하자. (의도 전달하기, 팀과 일관된 코드 스타일, 하나의 역할, 매개변수 명확히, 예측 가능한 코드)

 


 

드디어 5명의 클래스 수정본을 병합해 게임 초안을 완성시켰다!

수정 과정에서는 나의 Store 부분이 오류가 많았지만,

팀원들과 회의도 하고 튜터님께 질문하면서 어려운 과정을 해결할 수 있었다. 감사합니다 :)

작성 과정에서 오류가 많았지만 인게임 기능이 잘 작동해서 다행이다.

기능 오류, UI 개선, 인게임 경제 관련해서 내일 계속 디버깅하면서 개선시킬 것이다.

 

같이 만들어가니까 확실히 완성도도 높아지고, 선택 사항도 디벨롭할 수 있어서 좋다.

내일은 게임이 얼마나 더 좋아질까?

펜타곤 파이팅~

 

 

 

 

 

 

댓글