TextRPG 팀프로젝트

조정원·2025년 6월 25일

팀 프로젝트 TextRPG가 완성되었다.

깃허브 링크
시연 영상

각자 클래스를 만들어보고 합치는 과정에서 빌드가 안되어서 애먹었지만 잘 해결되었다.
나는 GameManager, LogManager, main 문 등을 담당했다.
코드를 완성한 뒤 Text긴해도 보이는게 중요하기 때문에 여러 수정을 거쳐 그럴듯한 텍스트RPG가 만들어졌다.

여러 코드들을 다루다보니 Python에만 익숙했던 것에서 C++도 많이 친숙해진 느낌이다.
지금까지 싱글톤, 옵저버, 데코레이터의 디자인 패턴을 배웠다.
더 많은 디자인 패턴을 넣으면 좋았겠지만, Character나 LogManager 클래스 둘다 싱글톤을 사용했고, LogManager를 옵저버로 만드려고 계획했으나 로그에 남길 내용이 단순해서 사용하지 않았다.
LogManager 클래스는 객체를 생성하지 않아도 싱글톤이라 바로 인스턴스를 가져와 함수를 사용하고 로그를 남길 수 있어서 신기했다.

다음은 헷갈리거나 새로 알게된 내용을 정리했다.

헤더 파일과 소스 파일 분리

  • 클래스 선언은 .h
  • 정의는 .cpp에 작성
  • 역할 분리가 명확해져 유지보수와 협업에 유리

클래스 설계

  • Character, Monster, Item 등 주요 클래스를 구분해 설계
  • 상속 사용: 예) Goblin, Orc는 Monster 클래스를 상속
  • 인터페이스 또는 추상 클래스도 활용 가능

생성자와 초기화

  • 생성자에서 멤버 변수 초기화 중요
  • 생성자 오버로딩으로 유연한 객체 생성 가능

Getter / Setter

  • 멤버 변수 직접 접근 금지 → Getter / Setter 사용
  • const 함수는 읽기 전용일 때 사용 (int getLevel() const;)

조건문과 switch

  • if-else는 복잡한 조건에 사용
  • switch는 숫자 기반 선택지 구현에 적합 (ex: 메뉴 선택)

for문과 반복 처리

  • 반복적으로 몬스터 전투, 상점 구매 등 처리할 때 for, while 유용
  • for(auto& item : inventory) 형태로 C++11 범위 기반 for문 사용 가능

에러와 디버깅

  • "오버로드된 함수에서 2개의 인수를 사용하지 않습니다"
    → 함수 시그니처 불일치 (인자 개수 확인!)
  • "읽기 접근 위반"
    → 포인터가 nullptr일 수 있음 → 검증 필요 (if(ptr))
profile
게임 AI 개발자 조정원입니다.

0개의 댓글