코딩

CH2 개인과제 1번 상태창 구현(2)

story98138 2026. 3. 5. 17:43

Status_Main.cpp (1번글에 이어서)

 

천천히 읽기

 

  • setPotion(5, &HPPotion, &MPotion); 호출: 프로그램이 시작되자마자 setPotion 함수를 호출하여 HP 포션과 MP 포션의 개수를 각각 5개로 채우고 시작합니다.
  • int choice; 변수 선언: 사용자가 메뉴에서 선택한 번호를 저장할 상자를 만듭니다.
  • while (true) 무한 루프 진입: 사용자가 종료(0번)를 선택하기 전까지 메뉴를 계속 보여주기 위해 반복을 시작합니다.
  • 메뉴 출력 및 입력: 화면에 1번부터 6번까지의 메뉴를 보여주고, cin >> choice;를 통해 사용자의 번호를 입력받습니다.
  • 0번 입력 시 (종료): if (choice == 0) 조건이 참이 되면 "프로그램을 종료합니다"를 출력하고 break를 통해 무한 루프를 탈출합니다.
  • switch (choice) 분기 시작: 입력된 번호에 따라 해당 기능을 실행합니다.
    - Case 1 (MP 포션): MPotion이 0보다 크면 status[1](MP)을 20 올리고 포션 개수를 1개 줄입니다.
    - Case 2 (HP 포션): HPPotion이 0보다 크면 status[0](HP)을 20 올리고 포션 개수를 1개 줄입니다.
    - Case 3 (공격력 2배): status[2](공격력)에 2를 곱해 공격력을 강화합니다.
    - Case 4 (방어력 2배): 비트 시프트 연산(<<= 1)을 사용하여 status[3](방어력)을 2배로 만듭니다.
    - Case 5 (현재 능력치): 배열 status에 저장된 모든 수치(HP, MP, ATK, DEF)와 남은 포션 개수를 화면에 출력합니다.
    - Case 6 (레벨 업): HPPotion과 MPotion을 각각 1개씩 추가로 지급합니다.
  • 잘못된 번호 입력: 0~6 이외의 번호를 누르면 default 문구가 실행되어 "잘못된 번호입니다"를 출력합니다.
  • 루프 재시작: break를 만나 switch문을 빠져나오면 다시 while문의 처음으로 돌아가 메뉴를 다시 보여줍니다.


 

어려웠던 점

이번 과제에서 어려웠던 점은 C언어만 공부했다보니 Cpp의 함수가 생소해서 Switch문을 사용할 때 어렵게 느껴졌습니다.

 

추가로 언리얼엔진에서 만들던 인벤토리 시스템에서 포션슬롯에 다른 슬롯을 드레그&드롭했을 때 포션슬롯이 그 슬롯을 삼켜버리는 버그가 발생해서 문제점을 찾다가 결국 해결하지 못했습니다. 현재는 처음부터 다시 인벤토리 시스템을 만들고 있습니다.