#include <stdio.h>
void RoomMain()
{
int player = 0;
int keypiece1 = 1;
int keypiece2 = 2;
int keypiece3 = 3;
int keypiece4 = 4;
int Pocket[1][5];
int key = 5;
enum eRoom { bed = 1, desk, bookshelf, closet, door };
while (player != 5 || Pocket[1][5] != key)
{
printf("\n방에 갇혔다.\n무엇을 해야할까?\n(%d:침대, %d:책상, %d:책장, %d:옷장, %d:문)\n", bed, desk, bookshelf, closet, door);
scanf("%d", &player);
switch (player)
{
case bed:
if (Pocket[1][1] == keypiece1)
printf("침대에는 아무것도 없는것 같다.\n");
else
printf("열쇠조각 1을(를) 습득했다.\n");
Pocket[1][1] = keypiece1;
break;
case desk:
if (Pocket[1][5] == key)
printf("이미 열쇠는 만들어 졌다.\n");
else if (Pocket[1][1] == keypiece1 && Pocket[1][2] == keypiece2 && Pocket[1][3] == keypiece3 && Pocket[1][4] == keypiece4)
{
printf("조립키트를 사용해 열쇠가 완성되었다!\n");
Pocket[1][5] = key;
}
else if (Pocket[1][2] == keypiece2)
printf("책상에는 아무것도 없는것 같다.\n");
else
printf("열쇠조각 2을(를) 습득했다.\n");
Pocket[1][2] = keypiece2;
break;
case bookshelf:
if (Pocket[1][3] == keypiece3)
printf("책장에는 아무것도 없는것 같다.\n");
else
printf("열쇠조각 3을(를) 습득했다.\n");
Pocket[1][3] = keypiece3;
break;
//다른코드들과 다름이 없는데 열쇠조각 획득문구가 한번 더 뜨는 이유?
case closet:
if (Pocket[1][4] == keypiece4)
printf("옷장에는 아무것도 없는것 같다.\n");
else
printf("열쇠조각 4을(를) 습득했다.\n");
Pocket[1][4] = keypiece4;
break;
case door:
if (Pocket[1][5] == key && door == 5)
printf("방을 탈출했다!\n\n");
else
printf("열쇠가 없다!\n");
break;
default:
printf("다른곳을 찾아보자.\n");
break;
}
}
}
void main()
{
RoomMain();
}
이렇게 코드를 작성하여 컴파일을 해 보았습니다.
그런데 열쇠조각 3번에서 문제가 발생 했습니다.
열쇠를 만들고 난 뒤에 다른 열쇠조각들은 문제없이 열쇠조각이 없다는 문구가 뜨는데에 반해 열쇠조각 3번만 이상하게 '열쇠조각3을 획득했다'라는 문구가 다시 실행됩니다.
이 문제를 해결하고 싶어 질문을 드립니다.
코드에는 문제가 없습니다만... 저부분이 문제될만한 소지는 없어보이네요.
실제로 실행시에도 문제없었으니 다시 한번 체크해보세요.
빌드>솔루션정리
이후
빌드>솔루션다시빌드
선택해서 결과 확인해보세요.