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

TextRPG - 장비 판매 시 버그 해결

by 빛하_ 2023. 11. 21.

 

 

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

 

1. 상점 목록의 table에서 Count 표기 없애기 

 

인벤토리, 상점 등을 단정하게 표로 나타내기 위해 using ConsoleTables; 를 사용했다.

그런데, ConsoleTable table = new ConsoleTable 로 지정하면 아래처럼 Count 가 뜬다.

            

Table에서 Count를 띄우는 기능은 table option에 있는 EnableCount의 bool 값으로 작동한다.

table.Options.EnableCount = false;
table.Write();

 

이렇게 EnableCount = false; 로 설정하니 Count가 깔끔하게 사라졌다.

 

 

 

 

2. IsEquip 상태인 아이템 판매 시 생기는 버그 해결

 

StoreSell 에서 Equip여부와 상관없이 장비아이템을 판매할 수 있다.

하지만, IsEquip 상태인 장비를 판매한 경우 Gold는 제대로 들어오지만 player1의 능력치가 감소하지 않았다.

공격력 +5 인 장비를 판매해도 공격력이 그대로 유지되는 현상이었다.

<문제점>

1) IsEquip 상태의 장비를 판매해도 player1의 능력치가 감소하지 않음

2) IsEquip 상태의 장비를 판매한 후 다시 구매하면 player1의 능력치에 오류가 발생 (장착 상태도 들어와서)

 

처음에는 StoreSell 에서 조건문을 사용해 IsEquip인 장비를 판매하지 못하도록 막으려고 했으나,

상점 이용에 자유도가 떨어지기 때문에 유저가 불편해질 것이라고 생각했다.

 

따라서 유저가 판매할 아이템 숫자를 입력할 때 조건문을 걸어서

IsEquip 장비라면 player1의 능력치에서 데이터를 감소시키도록 추가했다.

else
{
   Program.player1.Gold += Program.player1.Inventory.armorItem[input - 1].Gold * 70 / 100;
   StoreWeapon.Add(Program.player1.Inventory.armorItem[input - 1]);
   if (Program.player1.Inventory.armorItem[input - 1].IsEquip)
   {
   Program.player1.Defence -= Program.player1.Inventory.armorItem[input - 1].Def;
   Program.player1.Inventory.armorItem[input - 1].IsEquip = false;
   }
   Program.player1.Inventory.armorItem.Remove(Program.player1.Inventory.armorItem[input - 1]);
   Console.WriteLine("방어구를 판매했습니다.");
   Thread.Sleep(1000);
   StoreSellArmor();
}

 

* 유저가 숫자를 입력했을 때 작업 순서

1) if 0이라면 StoreSell 화면으로 돌아갑니다.

2) if 0이 아니라면 해당 아이템 가격의 70% 만큼을 player1.Gold에 추가합니다.

3) StoreWeapon 목록에 해당 아이템을 추가합니다.

4) if IsEquip 장비라면 player1의 def 또는 atk 를 아이템 효과만큼 감소시킵니다. : 문제1 해결

5) if IsEquip 장비라면 해당 장비의 IsEquip = false 로 바꿉니다. : 문제2 해결

6) player의 inventory에서 해당 아이템을 삭제합니다.

 

 

오늘의 회고

 

병합하고나니 고쳐야할 부분이 많이 보였다. 

인게임에서 어떤 오류가 있는지 모르기 때문에 계속 실행시키면서 고치느라 시간이 많이 필요하다.

과제 제출하는 날까지 병합하기로 했다면 큰일났을 것 같다. 

다음 과제 때는 병합 이후로도 수정하고 개선시킬 수 있는 시간을 더 여유있게 잡아야겠다고 생각했다.

 

<내일까지 꼭 해결해야 하는 문제>

1) 상점에서 구매한 물약이 인벤토리에 정상적으로 add 되어야 함

2) 상점에서 물약을 판매할 때 하나씩 판매할 수 있도록 수정

3) 상점 목록에 뜨는 직업란을 string으로 수정

 

 

 

 

댓글