본문 바로가기
C 계열/C

💻 MUD를 구현하며 배우는 C언어 (#2) 스토리 만들기

by Yubin Heo 2020. 4. 1.

스토리 만들기라고 스토리만 짤건 아닙니다.

직접 C코드로 스토리를 보여주는 코드를 만들어 볼겁니다.

 

🎲 스토리 짜기


스토리를 보여주려면 스토리를 짜야겠죠?

여러분들이 원하는 스토리로 짜시면 되는데,

스토리 짜기가 매우 귀찮은 관계로 메이플스토리 세계 창조 스토리를 사용해 보겠습니다.

 

더보기

고대, 태초의 세계에는 돌, 나무, 바람, 해와 달, 강물과 바다 등,

365개의 피조물에 신이 깃들었고 각자가 자신의 권능을 발휘하며

세상을 무질서하게 만들었다.

 

태초의 신에게서 힘을 받은 세 명의 오버시어가 나타났다.

오버시어들이 각각 자신의 권능인 '빛', '시간', '생명'을 세계에 부여해 질서를 세우자,

고대신들은 세상의 법칙을 다룰 힘을 잃어버리고 버려지게 되었다.

기존의 신들이 잃어버린 힘은 무덤 속에 가두어졌고 

주시하는 신 아브락사스는 그 무덤을 지켜보게 되고, 세계를 셋으로 나누었다.

 

태초의 어둠 속에서 세 여신이 나타나 순수한 에너지

그 자체인 에르다를 빚어 메이플 월드, 그란디스, 마스테리아 세 세계를 창조하였다.

만물을 구성하는 원소가 된 에르다는 생명과 물체가

만들어지고 사라지는 것을 반복하며 세상에 흐르게 된다.

이후 여신들은 그 세계의 용사들을 수호하며 때때로

인간과 에르다를 이어줘 에르다를 다루는 능력을 발현시켜주었다.

 

질서를 세운 오버시어들은 질서가 무너지고 고대신들이

부활하는 일이 일어나지 않도록 자신들의 대리인으로서 힘을 나눠준 초월자를 배치했다.

각 세계당 빛의 초월자, 시간의 초월자, 생명의 초월자를 각

각 한 명씩, 총 세 명을 배치했다.

초월자는 존재 그 자체로 담당하는 영역의 균형을 유지하는 역할을 맡아

에르다의 흐름에 이상이 생기지 않도록 보호하였다.

이로 인해 세계의 불확실성이 감소되었으며, 감히 예측할 수 없었던

미래를 결정된 것으로 바꾸어버렸다.

 

보통 스토리는 어떤식으로 넘어가죠? 게임이 시작했을 떄,

엔터를 누르면 한줄 씩 넘어가는 형식이죠?

그 작업을 해볼겁니다.

 

 

🎲 printf()와 Pause()를 이용한 스토리 뷰 구성하기 (1)


일단 저번 시간에 설치해 두셨을(?) Visual Studio를 실행해 줍니다.

새 프로젝트 만들기(N) 을 클릭해 줍니다.

 

빈 프로젝트(C++)을 선택하고 다음을 눌러줍니다.

 

프로젝트 이름에 원하는 것을 입력하시고,

프로젝트 위치를 우측 ... 버튼을 이용해 지정하시고 만들기!

 

잘 보이진 않지만 우측 솔루션 탐색기에서,

소스 파일 부분을 우클릭 하신 후, 추가 -> 새 항목을 눌러줍니다.

 

가장 중요한 부분 입니다.

C++ 파일 (.CPP) 를 클릭하시고,

하단에 이름 부분에 소스.cpp 라고 되있으실텐데,

이 부분을 소스.c 로 고쳐주세요.

 

 

짠! 이제 이 곳에 우리가 배울 C언어 코드를 입력하시면 됩니다.

 

🎲 printf()와 Pause()를 이용한 스토리 뷰 구성하기 (2)


소스.c (코드)

#include <stdio.h>
#include <stdlib.h>

#define pause system("pause > nul");

int main(void) {
	printf("Hello World!\n");
	pause;
	printf("\ni'm C Language!\n");
	return 0;
}

소스.c (실행 결과)

Hello World!
(Enter)
i'm C Language!

C:\Users\HeoYuBin\source\repos\MudProject\Debug\MudProject.exe(프로세스 2228개)이(가) 종료되었습니다(코드: 0개).
이 창을 닫으려면 아무 키나 누르세요...

 

💛 소스 코드 해석하기

#include <stdio.h>
#include <stdlib.h>

-> C언어에서 사용되는 헤더 파일을 불러오는 작업 입니다.

    stdio.h기본 입출력(I/O) 헤더이고,

    stdlib.hC 언어의 표준 라이브러리로, 문자열 변환, 의사 난수 생성,

    동적 메모리 관리 등의 함수들을 포함하고 있습니다

 

#define pause system("pause > nul");

 -> #define은 무엇을 정의할 때 사용합니다.

     이 코드에선 pause를 system("pause > nul"); 로 정의해라 라는 의미 입니다.

 

int main(void) { ... }

 -> main 함수를 정의하는 방법 입니다.

     특히 main 함수는 매우매우 중요한 함수 입니다.

     프로그램 내에 딱 더도 말고 1개만 있어야 합니다.

     그리고 main함수가 없으면 오류가 납니다.

     프로그램을 실행하면 제일 먼저 main 함수로 갑니다.

 

printf("Hello World!\n"); / printf("\ni'm C Language!\n");

 -> " " 안에 있는 내용을 그대로 출력해주는 C언어의 기본 출력 함수 입니다.

     \n은 개행문자로서, 글을 쓸 때, 한 번 엔터(Enter)를 누르는 것과 같습니다.

 

pause

 -> 위에 #define 을 이용하여 pause 라는 것을 정의한 바 있습니다.

     위처럼 #define으로 정의를 하면, 좌측에 있는 항목을 사용할 수 있습니다.

 

return 0;

 -> 이해하자면 어려운 부분입니다. 이 아래 내용은 지금은 무시하셔도 됩니다.

     위에 int 형으로 main 함수를 선언했습니다.

     int는 정수형을 나타냅니다. 즉, 0이라는 정수를 반환합니다.

     쉽게 설명해서 타입이 숫자형이면 return 해줘야 합니다.

 

우리는 이렇게 해서 엔터를 누르면 다음 문장으로 넘어가는 코드를 작성 해봤습니다.

이제 엄청나고 엄청나게 힘든 노가다를 해서 스토리 뷰를 구성해 봅시다.

 

소스.c (진짜 단순한데 엄청 깁니다 ㅋ)

#include <stdio.h>
#include <stdlib.h>

#define pause system("pause > nul");

int main(void) {
	printf("고대, 태초의 세계에는 돌, 나무, 바람, 해와 달, 강물과 바다 등,\n");
	printf("365개의 피조물에 신이 깃들었고 각자가 자신의 권능을 발휘하며 세상을 무질서하게 만들었다.\n");
	pause;
	printf("\n태초의 신에게서 힘을 받은 세 명의 오버시어가 나타났다.\n");
	pause;
	printf("\n오버시어들이 각각 자신의 권능인 '빛', '시간', '생명'을 세계에 부여해 질서를 세우자,\n");
	printf("고대신들은 세상의 법칙을 다룰 힘을 잃어버리고 버려지게 되었다.\n");
	pause;
	printf("\n기존의 신들이 잃어버린 힘은 무덤 속에 가두어졌고 \n");
	printf("주시하는 신 아브락사스는 그 무덤을 지켜보게 되고, 세계를 셋으로 나누었다.\n");
	pause;
	printf("\n태초의 어둠 속에서 세 여신이 나타나 순수한 에너지\n");
	printf("그 자체인 에르다를 빚어 메이플 월드, 그란디스, 마스테리아 세 세계를 창조하였다.\n");
	pause;
	printf("\n만물을 구성하는 원소가 된 에르다는 생명과 물체가\n");
	printf("만들어지고 사라지는 것을 반복하며 세상에 흐르게 된다.\n");
	pause;
	printf("\n이후 여신들은 그 세계의 용사들을 수호하며 때때로\n");
	printf("인간과 에르다를 이어줘 에르다를 다루는 능력을 발현시켜주었다.\n");
	pause;
	printf("\n질서를 세운 오버시어들은 질서가 무너지고 고대신들이\n");
	printf("부활하는 일이 일어나지 않도록 자신들의 대리인으로서 힘을 나눠준 초월자를 배치했다.\n");
	pause;
	printf("\n각 세계당 빛의 초월자, 시간의 초월자, 생명의 초월자를 각각 한 명씩, 총 세 명을 배치했다.\n");
	pause;
	printf("\n초월자는 존재 그 자체로 담당하는 영역의 균형을 유지하는 역할을 맡아\n");
	printf("에르다의 흐름에 이상이 생기지 않도록 보호하였다.\n");
	pause;
	printf("\n이로 인해 세계의 불확실성이 감소되었으며, 감히 예측할 수 없었던\n");
	printf("미래를 결정된 것으로 바꾸어버렸다.\n");
	pause;
	return 0;
}

 

소스.c (실행 결과)

고대, 태초의 세계에는 돌, 나무, 바람, 해와 달, 강물과 바다 등,
365개의 피조물에 신이 깃들었고 각자가 자신의 권능을 발휘하며 세상을 무질서하게 만들었다.

태초의 신에게서 힘을 받은 세 명의 오버시어가 나타났다.

오버시어들이 각각 자신의 권능인 '빛', '시간', '생명'을 세계에 부여해 질서를 세우자,
고대신들은 세상의 법칙을 다룰 힘을 잃어버리고 버려지게 되었다.

기존의 신들이 잃어버린 힘은 무덤 속에 가두어졌고
주시하는 신 아브락사스는 그 무덤을 지켜보게 되고, 세계를 셋으로 나누었다.

태초의 어둠 속에서 세 여신이 나타나 순수한 에너지
그 자체인 에르다를 빚어 메이플 월드, 그란디스, 마스테리아 세 세계를 창조하였다.

만물을 구성하는 원소가 된 에르다는 생명과 물체가
만들어지고 사라지는 것을 반복하며 세상에 흐르게 된다.

이후 여신들은 그 세계의 용사들을 수호하며 때때로
인간과 에르다를 이어줘 에르다를 다루는 능력을 발현시켜주었다.

질서를 세운 오버시어들은 질서가 무너지고 고대신들이
부활하는 일이 일어나지 않도록 자신들의 대리인으로서 힘을 나눠준 초월자를 배치했다.

각 세계당 빛의 초월자, 시간의 초월자, 생명의 초월자를 각각 한 명씩, 총 세 명을 배치했다.

초월자는 존재 그 자체로 담당하는 영역의 균형을 유지하는 역할을 맡아
에르다의 흐름에 이상이 생기지 않도록 보호하였다.

이로 인해 세계의 불확실성이 감소되었으며, 감히 예측할 수 없었던
미래를 결정된 것으로 바꾸어버렸다.

C:\Users\HeoYuBin\source\repos\MudProject\Debug\MudProject.exe(프로세스 7656개)이(가) 종료되었습니다(코드: 0개).
이 창을 닫으려면 아무 키나 누르세요...

 

직접 한번 해보시는걸 추천드립니다.

다음 강좌에선 메인 화면을 한번 꾸며보겠습니다.

댓글