#include <stdio.h>
/* 방탈출 게임
게임목적 : 열쇠조각을 모아 열쇠를 만들어 잠긴문을 열고 탈출하라
방 조사 -> 열쇠획득 -> 다시 방을들어가면 조사불가
열쇠조각 4개를 모아서 책상으로가면 열쇠를 획득
획득한열쇠로 문을열고 탈출*/
void main()
{
enum Steage { Bed = 1, Desk, Bookcase, Closet, Gatde };
int Steage;
int a =1; //while문 탈출
int key =0; //열쇠 조각을 저장
int KEY =0; //열쇠 조각을 열쇠로 저장
int key1 =0; //열쇠조각1
int key2 =0; //열쇠조각2
int key3 =0; //열쇠조각3
int key4 =0; //열쇠조각4
printf("나는 지금 방에 갇혀있다.\n");
printf("방문은 잠겨있고 문을열기위해서는 열쇠가 필요하다!.\n");
while (a)
{
printf("어디를 찾아볼까?\n");
printf("<침실:%d, 책상:%d, 책장:%d, 옷장:%d, 문:%d>\n\n", Bed, Desk, Bookcase, Closet, Gatde);
scanf("%d", &Steage);
printf("\n");
switch (Steage) //원하는 장소를 선택하여 그곳을 조사한다
{
case Bed:
if (key == 4) //조각이 모이면 책상으로 가자
{
printf("**************************************************\n");
printf(" 조각을 모두 모았으니 책상으로가서 열쇠를 만들자!\n");
printf("**************************************************\n");
}
else if (key1 < 1)
{
printf("================================\n");
printf(" 침실에서 열쇠조각1을 획득했다.!\n\n"); //열쇠조각을 획득
printf("================================\n");
key += 1; //획득한 열쇠조각을 key에 저장
}
else if (key1 >= 1)
printf("여기선 더이상 할게 없다.\n"); //열쇠조각을 획득했으니 더이상 할게없음
key1++;
break;
case Desk:
if (key == 4) //열쇠조각4가모이면 KEY에 저장
{
printf("열쇠를 획득했다.!\n");
printf("======================\n");
printf(" 이제 문을 열수있다!!!.\n");
printf("======================\n");
KEY = key;
key = 0; //열쇠를 만들었으니 조각을 모아둔 key는 없어진다.
}
else if (key2 < 1)
{
printf("================================\n");
printf(" 책상에서 열쇠조각2를 획득했다!.\n\n");
printf("================================\n");
key += 1;
}
else if (key2 >= 1)
printf("여기선 더이상 할게 없다.\n");
key2++;
break;
case Bookcase:
if (key == 4)
{
printf("**************************************************\n");
printf(" 조각을 모두 모았으니 책상으로가서 열쇠를 만들자!\n");
printf("**************************************************\n");
}
else if (key3 < 1)
{
printf("================================\n");
printf(" 책상에서 열쇠조각3를 획득했다!.\n\n");
printf("================================\n");
key += 1;
}
else if (key3 >= 1)
printf("여기선 더이상 할게 없다.\n");
key3++;
break;
case Closet:
if (key == 4)
{
printf("**************************************************\n");
printf(" 조각을 모두 모았으니 책상으로가서 열쇠를 만들자!\n");
printf("**************************************************\n");
}
else if (key4 < 1)
{
printf("================================\n");
printf(" 책상에서 열쇠조각4를 획득했다!.\n\n");
printf("================================\n");
key += 1;
}
else if (key4 >= 1)
printf("여기선 더이상 할게 없다.\n");
key4++;
break;
case Gatde:
if (key == 4)
{
printf("**************************************************\n");
printf(" 조각을 모두 모았으니 책상으로가서 열쇠를 만들자!\n");
printf("**************************************************\n");
}
else if (KEY < 1) //KEY가 없으므로 문을 열수없음
printf("문이잠겨 나갈수없다.!\n\n");
else if (KEY == 4) //KEY가 있으면 문을 열고 나감
a = 0;
break;
default :
printf("그런곳은 없다.\n"); //다른곳을 선택하면 그런곳은 없기때문에 없다라고 출력
}
}
printf("******************\n");
printf("*방을 탈출했다!!!*\n");
printf("******************\n");
}
코드에 군더더기가 없고, 적절한 예외처리까지 잘해두었군요. 잘했습니다.
다만 저상황에 굳이 변수를 int형으로 사용할 필요가 있었는가에 대해서 생각해보세요.