๐ฒ ์ฝ๋ ๋ฌด์์ ๋ฐ๋ผํ๊ธฐ
์์ค.c (์ข ์ด๋ ต์ต๋๋ค ์ ๋ฐ๋ผ์ฐ์ธ์)
#include <stdio.h>
#include <windows.h>
#define pause system("pause > nul");
#define cls system("cls");
#define mainsize system("mode con cols=90 lines=30"); // cols = ์นธ/ํ (๊ฐ๋ก) lines = ์ค/์ด (์ธ๋ก)
void ViewStory(); // ์คํ ๋ฆฌ๋ฅผ ๋ณด์ฌ์ฃผ๋ ํจ์
void ViewMain(); // ๋ฉ์ธ ํ๋ฉด์ ๋ณด์ฌ์ฃผ๋ ํจ์
void gotoxy(int x, int y); // ์ปค์ ์ด๋ ํจ์
void setcolor(int number); // ์์ ๋ณ๊ฒฝ ํจ์
int main(void) {
printf("๊ฒ์์ ์ค์ ๊ฒ์ ํ์ํฉ๋๋ค!");
cls;
ViewStory();
ViewMain();
}
void gotoxy(int x, int y) {
COORD pos = { x,y };
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);
}
void setcolor(int number) {
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), number);
}
void ViewStory() {
cls;
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;
printf("\n\n์๋ฌด ํค๋ ๋๋ฅด์๋ฉด ๋ฉ์ธ ํ๋ฉด์ผ๋ก ๋์๊ฐ๋๋ค.\n");
pause;
}
void ViewMain() {
int select;
cls;
mainsize;
gotoxy(38, 5);
setcolor(9);
printf("Text RPG Game!");
gotoxy(6, 7);
setcolor(15);
printf("๋ด ์ด๋ฆ : ํ๊ธธ๋");
gotoxy(6, 8);
printf("HP : 20 \t MP : 20 \t EXP : 0% \t LEVEL : 1");
gotoxy(6, 10);
printf("1. ์ ํฌ๋ฅผ ํ๋ฌ ๋๊ฐ๋ค");
gotoxy(6, 11);
printf("2. ์์ดํ
์ ์ฌ๋ฌ ๊ฐ๋ค");
gotoxy(6, 12);
printf("3. ๋
ธ๋์ ํ๋ฌ ๊ฐ๋ค");
gotoxy(6, 13);
printf("4. ์ ์ ํด์์ ์ทจํ๋ค");
gotoxy(6, 14);
printf("5. ๊ฒ์์ ์ข
๋ฃํ๋ค");
gotoxy(6, 16);
printf("| ๋ฌด์์ ํ๋ ๊ฒ์ด ์ข์๊น? | >> ");
scanf_s("%d", &select);
pause;
}
๊ฐ์๊ธฐ ๋์ด๋๊ฐ ํ ์์นํ์ต๋๋ค... ๊ทธ๋ด ์ ๋ฐ์ ์์ต๋๋ค.
๊ฑฑ์ ๋ง์ธ์ ํ๋์ฉ ์ค๋ช ํ ๊ฒ๋๋ค.
๐ฒ ์ฝ๋ ๋ฌด์์ ํด์ํ๊ธฐ(?)
#define cls system("cls");
#define mainsize system("mode con cols=90 lines=30");
-> ์ ๋ฒ ์๊ฐ์ ๋ฐฐ์ด ๋ถ๋ถ์ ๋๋ค. cls๋ ํ๋ฉด์ ์ฒญ์ํด ์ฃผ๋ ๋ช ๋ น์ด ์ ๋๋ค.
mde con์ cols๊ฐ ๊ฐ๋ก, lines๊ฐ ์ธ๋ก๋ก์, ์คํ ํ๋ฉด์ ํฌ๊ธฐ๋ฅผ ๋ณ๊ฒฝํด ์ค๋๋ค.
void ViewStory(); // ์คํ ๋ฆฌ๋ฅผ ๋ณด์ฌ์ฃผ๋ ํจ์
void ViewMain(); // ๋ฉ์ธ ํ๋ฉด์ ๋ณด์ฌ์ฃผ๋ ํจ์
void gotoxy(int x, int y); // ์ปค์ ์ด๋ ํจ์
void setcolor(int number); // ์์ ๋ณ๊ฒฝ ํจ์
-> ์ฌ์ฉ์ ์ ์ ํจ์๋ผ๋ ๊ฒ์ ๋ง๋ค์ด์ฃผ๋ ๋ถ๋ถ ์ ๋๋ค.
void๋ ๋ฐํ๊ฐ์ด ์๋ ํ์ ์ ๋๋ค ๋ฐ๋ผ์ return์ ํด์ค ํ์๊ฐ ์์ต๋๋ค.
ViewStory ํจ์๋ ์ฌ์ฉ์๋ค์๊ฒ 2ํธ์์ ๋ง๋ค์๋ ์คํ ๋ฆฌ๋ฅผ ๋ณด์ฌ์ค๋๋ค.
ViewMain ํจ์๋ ์ฌ์ฉ์๋ค์๊ฒ ๋ฉ์ธ ํ๋ฉด์ ๋ณด์ฌ์ค๋๋ค.
gotoxy ํจ์๋ ์ํ๋ ์์น์ printf๋ฅผ ํ ์ ์๋๋ก ์ปค์ ์์น๋ฅผ ์ด๋์์ผ ์ค๋๋ค.
setcolor ํจ์๋ ์ํ๋ ์์์ ๊ธ์ ์ธ ์ ์๋๋ก ๊ธ ์์์ ๋ณ๊ฒฝํด ์ค๋๋ค.
ViewStory();
ViewMain();
-> ์์์ ์ ์ํ๋ ํจ์๋ฅผ ํธ์ถํ๋ ๋ถ๋ถ ์ ๋๋ค.
๋ง์ฝ ์ธ์๊ฐ์ด ์๋ ํจ์๋ผ๋ฉด ( ) ์์ ์ธ์๊ฐ์ ์ ๋ ฅํ๋ฉด ๋ฉ๋๋ค.
void gotoxy(int x, int y) {
COORD pos = { x,y };
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);
}
-> ์ปค์๋ฅผ ์ด๋์์ผ์ฃผ๋ ํจ์ ์ ๋๋ค.
์ธ์๊ฐ์ผ๋ก ์ ์ํ x ๋ณ์์ y ๋ณ์๊ฐ ์์ต๋๋ค. ์ด๋ ์ขํ๋ฅผ ๋ปํฉ๋๋ค.
๋ฐ๋ผ์ gotoxy ํจ์๋ ์ํ๋ ์ขํ๋ก ์ปค์๋ฅผ ์ด๋์์ผ ์ค๋๋ค.
์์ธํ๊ฑด ๋งค์ฐ ์ด๋ ค์ด ๋ด์ฉ์ด๋ ์ด๋ฐ ๊ธฐ๋ฅ์ด ์๋ค๋ ๊ฒ๋ง ์์๋ก์๋ค.
์ด์จ๋ ํ์ํ๊ธด ํ ๋ถ๋ถ์ ๋๋ค.
void setcolor(int number) {
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), number);
}
-> ์ด ๋ถ๋ถ๋ ๋งค์ฐ ์ด๋ ค์ด ๋ถ๋ถ ์ ๋๋ค.
์ธ์๊ฐ์ผ๋ก ์ ์ํ number ๋ณ์๊ฐ ์์ต๋๋ค.
์ฝ์์์ setconsoletextattribute ํจ์๋ก ๊ธ์ ์์์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
์ฌ์ฉํ ์ ์๋ ์ซ์ ๋ฒํธ๋ ์๋์ ๊ฐ์ต๋๋ค.
0 = ๊ฒ์ ์ |
1 = ํ๋์ |
2 = ์ด๋ก์ |
3 = ์ฅ์ |
4 = ๋นจ๊ฐ์ |
5 = ์์ฃผ์ |
6 = ๋ ธ๋์ |
7 = ํฐ์ |
8 = ํ์ |
9 = ์ฐํ ํ๋์ |
10 = ์ฐํ ์ด๋ก์ |
11 = ์ฐํ ์ฅ์ |
12 = ์ฐํ ๋นจ๊ฐ์ |
13 = ์ฐํ ์์ฃผ์ |
14 = ์ฐํ ๋ ธ๋์ |
15 = ์งํ ํฐ์ |
scanf_s("%d", &select);
-> ๋ณธ๋๋ scanf("%d", &select"); ์ ํ์์ผ๋ก ์ฌ์ฉํฉ๋๋ค,
ํ์ง๋ง Visual Studio 2013(?) ์ด์์ ๋ฒ์ ๋ถํฐ ๋ณด์์์ ์ด์ ๋ก
scanf_s ์ฌ์ฉ์ ๊ถ๊ณ ํ๊ณ ์์ต๋๋ค. ์ํด ์์ผ๋๊น _s ๋ก ์ฌ์ฉํด ์ค๋๋ค.
"%d" ๋ ์ ์ํ ๋ณ์์ ๊ฐ์ ์ ๋ ฅ๋ฐ๊ฒ ๋ค๋ ์๋ฏธ ์ ๋๋ค.
&select๋ select ๋ผ๋ ๋ณ์์ ์ฃผ์๋ฅผ ์๋ฏธํฉ๋๋ค.
์ฝ๊ฒ ์ค๋ช ํ๋ฉด ๊ฐ์ ์ฌ์ฉ์๋ก๋ถํฐ ์ ๋ ฅ๋ฐ์์ ๊ทธ ๊ฐ์ select ๋ณ์์ ๋ฃ๊ฒ ๋ค๋ ๊ฒ๋๋ค.
๊ทธ๋ ๊ฒ ํด์ ์ค๋ ์ฝ๋๋ก ์์ ๊ฐ์ ํ๋ฉด์ ๋ง๋ค์์ต๋๋ค.
๋ค์ ์๊ฐ์๋ ์ ํ๊ธธ๋, hp, mp, exp, level ๋ถ๋ถ์
๋ณ์๋ก ๋์ฒดํด๋ณด๊ณ ์ ๋ ฅํ 1,2,3,4,5 ์ ๋ํด์ ๊ฐ๊ฐ ํจ์ํ๋ฅผ ์์ผ์ฃผ๋
์์ ์ ํด๋ณด๊ฒ ์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค.
๋๊ธ