[TIL] Text RPG 제작하기(5)

주소리·2026년 7월 21일

TIL

목록 보기
28/48

main 함수를 길게 썼을 때 잘 수정할 자신이 있는가?
bool isPossible?
일단 저는 false 입니다.

고로 함수화를 바로바로 해주는 게 살길이라는 생각이 듭니다. 그림 그릴 때도 레이어 정리를 하지 않는 자는 수정이 오래 걸리더군요. 그러니 긴 메인 함수가 제게 죄악으로 보이는 것도 그렇게 큰 비약은 아닐 겁니다.

그리고 주석도 그때그때 잘 달아두겠습니다.

1. 강화 선택지 만들기

1-1 switch(choice)

강화 선택지를 만들고 있었죠.

단순 출력은 어려운 일이 아니지만 어줍잖은 함수를 만들다 오류가 뜬 게 보입니다.

다른 오류 메세지는 인정할 수 있지만 중괄호 짝은 뭔지 모르겠습니다. 짝 다 맞춘 줄 알았는데? 언제쯤 이런 기초 실수에서 벗어날 수 있을까요. 일단 납득할 수 있는 오류부터 고치겠습니다.

우선 name이 선언되지 않은 식별자라 뜨는 걸 보니 함수 내에서 변수를 받을 수 있게 만들어주겠습니다.


그리고 choice는 그냥 밖으로 빼주겠습니다.
나 새로 만들어진 매개변수야~ 를 알려주는 게 더 좋아보입니다. 그리고 호출 용이성 부분에서 그게 더 편리할 듯 합니다.

  • choice는 Upgrade 함수에서만 사용하는 변수니 이런 형식이 맞다고 합니다.

짧아진 main에 마음이 편안해집니다.

그리고 오류를 수정하니 중괄호 오류도 자연스레 사라졌습니다. 뭐였을까요. 제가 뭔가 정말 말이 안되는 문자를 적어 컴파일 중 작은 오해가 생겼나봅니다. 소통을 통해 원활하게 해결했습니다.

정리해보면

  • 함수 정의 할 때 받아야 하는 변수를 체크
  • 함수 내부에서만 쓰이는 변수는 안에서만 선언하는 게 효율적

이렇게 볼 수 있겠습니다.

고민인 지점 : Upgrade 함수를 Chatacter.cpp로 이사를 보내는 게 나을까 싶군요. main은 간결할 수록 나을 듯 하니 말입니다. 이사도 보내주고 헤더 파일에도 바로 정리하겠습니다.

어이쿠, 근데 switch를 써보기로 했는데 잊었군요. 무심코 익숙한 길을 가게 됩니다.

이에 앞서 swich와 if문을 어떻게 구분해서 선택하는가가 궁금하군요.

switch와 if문 선택 기준

switch가 어울리는 경우

  • 하나의 값이 여러 경우 중 무엇인지 비교할 때
  • 선택지가 명확하게 정해져 있을 때
  • 예: 연산자, 메뉴 번호, 상태값, 등급 코드

if문이 어울리는 경우

  • 크다, 작다, 이상, 이하 같은 범위 비교가 필요할 때
  • 여러 조건을 AND/OR로 조합해야 할 때
  • 조건식이 복잡할 때
  • 예: 점수 구간, 나이 제한, 0으로 나누기 검사

즉, switch는 값이 딱 떨어지는 선택지 비교에 좋고, if문은 조건을 판단하는 폭이 넓을 때 좋다고 합니다.

의문이 해결되었으니 수정해보겠습니다.
if문과 구분되는 switch의 또다른 특징은 항상 break를 써 빠져나와야 한다는 점입니다.


오류는 없지만 while에서 빠져나갈 수 없습니다.
bool 변수를 조정해보겠습니다.

초기 isGamestart 변수를 false로 둔 뒤 조건을 isGamestart가 true가 될 때로 변경합니다. 그리고 case 0일 때 true로 바꿨습니다.


잘 빠져 나오는군요.


게임 시작은 되지만 같은 번호를 눌러도 포션이 줄어들지 않습니다.
당연합니다. 아직 만들지 않았기 때문입니다.

profile
게임개발 및 아트, TA

0개의 댓글