프로젝트 일지/C#

[C#/TIL] TextRPG 개인 과제에서 겪은 것들 (2)

톰마토 2025. 2. 4. 21:43
728x90

길이가 다른 String 정렬 하기 좋은 함수 : PadLeft, PadRight

길이가 뒤죽박죽인 string들을 콘솔에 정렬해서 출력해야 한다. \t 만으로 정렬하기 힘들다. PadLeft, PadRight라는 함수를 알아내서 쉽게 해결할 수 있었다.

  • PadLeft(10) : string의 끝에서부터 왼쪽으로 10글자만큼의 패딩을 넣어줌.
  • PadRight(10) : string의 처음에서부터 오른쪽으로 10글자만큼의 패딩을 넣어줌.

 

C#의 클래스 객체는 무조건 참조형이다.

C#에서는 포인터라는 존재가 없다. 그대신 태생에 값형과 참조형이 정해져있어서 오히려 편리하다고 생각했는데, 직접 사용하다 보니 헷갈리는 순간이 있었다.

아이템 구매 코드 일부

캐릭터의 싱글톤 객체를 여러번 사용하기 위해 변수로 받아놓고 사용했다. 노란 네모 박스 내부의 코드에서 해당 player 객체의 Gold라는 멤버에 직접 접근해서 빼기 연산을 하고 있다. 이때 순간적으로 이러면 안되지 않나? 라는 생각이 들었다. 이 코드는 C++ 이었으면 진짜 플레이어에게 전혀 반영되지 않을 코드이다. 객체의 값 복사가 이루어진 것이기 때문이다.

하지만 C#에서는 클래스 객체가 무조건 참조형이기 때문에 가능하다!! 순간적으로 너무 어색했지만 편리하고.. C#의 푸근한 인심이 느껴졌다. 

 

오늘 필수 구현 기능을 다 마무리 했다.

- 아이템 구매

- 장착 관리 & 아이템 수치 반영 

 

내일 낮에 제출이니 오늘까지는 도전 기능의 일부에 시간을 투자했다.

-  단계별 던전 구현

- 휴식 존

게임 컨셉을 전반적으로 통일시키고 던전 이름도 재미있게 짓고 싶었는데, 기획에 투자할 시간이 없었다. 허허. 목요일부터 시작하는 팀 과제는 더 멋지게 만들고싶다! 

콘솔창에 컬러 출력

그리고 Console.ForegroundColor = ConsoleColor.Green; 와 Console.ResetColor(); 를 사용해서 심심한 텍스트 마을에 작은 이펙트라도 넣어주었다. 

// 결과 출력
Console.WriteLine("\n[탐험 결과]");
Console.ForegroundColor = ConsoleColor.DarkRed;
Console.WriteLine("체력 {0} -> {1}", originalHp, player.Health);
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("Gold {0} -> {1}", originalGold, player.Gold);
Console.ResetColor();

던전 탐험 결과창에 컬러 추가

색상만 넣어줘도 얻은 것과 잃은 것이 분명히 구별되어 보이는 효과가 있다.

 

🎮 던전이 거의 운빨게임이라 나는 재미있는 것 같다..ㅋㅋ 내가 만들어서 객관안을 잃었을지도 몰라. 

728x90