#include <stdio.h>
#include <stdbool.h>
/*
##방탈출 게임##
문을 열고 나가면된다.
문을 열기 위해서 열쇠가 필요하다
침대 열쇠조각 1
책상 열쇠 조각 2
책장 열쇠조각 3
옷장 열쇠조각 4
를 모아 책상에 다시가면 조립이 가능하다.
조립을 하면 열쇠를 얻고
얻은 열쇠를 이용하여 방을 탈출한다.
*/
// 방문을 했는지 안했는지 확인
//장소 4개 왔었으면 true 안왔었으면 false
int BangMain(void)
{
int S = 0;//열쇠
int K = 0;//열쇠 조각
int nStage = 0;
enum eStage { 침대 = 1, 책상, 책장, 옷장, 문, };
while (true)
{
if (K != 5)
{
printf("방을 탈출 하자\n 어디로 가볼까?(%d침대, %d책상, %d책장, %d옷장, %d문): ", 침대, 책상, 책장, 옷장, 문);
scanf("%d", &nStage);
}
else
break;
switch (nStage)
{
case 침대:
if (침대 == false)
{
K++;
printf("침대에서 열쇠조각을 찾았다!(%d개)\n\n", K);
}
else if (침대 == true)
{
printf("여기있는 열쇠조각을 벌써 가져왔다\n\n");
}
break;
case 책상:
if (K <= 3)
{
K++;
printf("책상에서 열쇠조각을 찾았다!(%d개)\n\n", K);
책상 == false;
}
else if (K >= 3)
{
S++; //열쇠 한개 추가
printf("드디어 열쇠조각을 다 모았다\n 열쇠를 만들었다.(열쇠 %d)\n\n", S);
}
break;
case 책장:
K++;
printf("책장에서 열쇠조각을 찾았다!(%d개)\n\n", K);
책장 == false;
break;
case 옷장:
K++;
printf("옷장에서 열쇠조각을 찾았다!(%d개)\n\n", K);
옷장 == false;
break;
case 문:
if (K <= 3)
{
문 == false; //문은 아직 FALSE
printf("문이 아직 잠겨있다.\n\n"); //열쇠가 없으므로
}
else if (S = 1)
{
K++;
문 == true;
printf("드디어 탈출에 성공했다!!!\n\n");
}
break;
default:
printf("알수없는곳이다\n\n"); //1~5가 아닐 경우 실행
break;
}
}
return 0;
}
void main()
{
BangMain();
}
키조각 4개를 같은 모양이라고 볼수없죠.
그렇다면, 각키조각을 하나로 표현하는것은 가능할까요?
당연히 불가능합니다.
그럼 각각의 키조각을 다른 개체로 보고,
만약 키조각1이없다면 거짓 있다면 참으로 본다면,
각 키조각은 어떤 변수타입으로 해서 어떤 데이터를 초기화해야할까요?
그리고 만약 키조각을 얻는다면 어떤 데이터로 변경되야 하나요?