22018, 1/1101 회원가입  로그인  
   hjt7942
   옛날에 C언어 입문했을때 배우고 처음 만들어봤던 게임.... 지금생각하면 웃김

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=31037 [복사]


#include <iostream>
#include <time.h>
#include <windows.h>
using namespace std;
#define Cri_20 20       // 1/20 확률   이용: 데미지의 오차
#define Cri_6 6        // 1/6 확률     이용: 공격시 크리티컬, 패시브(확률로 적공격 회피)
int Nobody_Key;  //아무키나 누르세요
short Choice_Stat = 0; // 레벨업시 어떤 능력치를 올릴지 선택문
short Char_Stat_Display; //캐릭터 정보 볼까요 (선택문) 1. 본다 2. 안본다.
short Char_Choice; // 캐릭터 선택 1. 검사 2. 마도사 3. 궁수
short Map_N; //선택 맵번호
short B_Choice; // 전투 중 방식
////////////////////////////////////장착 부위 ///////////////////////////////
short Arm = 0;
short Sheild = 0;
short Armor = 0;
short Helmet = 0;
short Accessory = 0;
short W_Item[5] = {Arm,Sheild,Armor,Helmet,Accessory}; // 장착중인 아이템[미구현] [0] = 무기 [1] = 방패 [2] = 갑옷 [3] = 투구 [4] = 악세사리
///////////////////////스탯 정보/////////////
class charstat   // 과제제출 1개월전에 코딩 다해놨는데 클래스 추가하라고하셔서 매우
{      // 힘들게 User. 이것만 복사해서 붙여넣기 몆백개 하였습니다.. ㅠㅠ
public:
short Jobs;  // 직업
short Level;
int Exp;
int Str;
int Int;
int Dex;
int Hp_Max;
int Mp_Max;
int Xp_Max;
int Hp;
int Mp;
int Xp;
int Gold;  // 소유중인 골드
int Point;  // 게임점수
int Stat_P;  // 남은 스탯
};
charstat User={0,1,0,2,2,2,250,150,26, 250, 150, 26, 0, 0, 0};

/////////////몬스터 스탯////////////////////////////
//  슬라임1 //
short Slime1_Level = 4;
int Slime1_Exp = 143;
short Slime1_Str = 2;
short Slime1_Int = 2;
short Slime1_Dex = 2;
short Slime1_Hp_Max = 127 * Slime1_Level;
short Slime1_Mp_Max = 24;
short Slime1_Xp_Max = 9;
int Slime1_Hp = Slime1_Hp_Max;
int Slime1_Mp = Slime1_Mp_Max;
int Slime1_Xp = Slime1_Xp_Max;
//  검은드레이크 //
short Darkdrake_Level = 14;
int Darkdrake_Exp = 1343;
short Darkdrake_Str = 14;
short Darkdrake_Int = 2;
short Darkdrake_Dex = 9;
short Darkdrake_Hp_Max = 127 * Darkdrake_Level;
short Darkdrake_Mp_Max = 24 * Darkdrake_Level;
short Darkdrake_Xp_Max = 9 * Darkdrake_Level;
int Darkdrake_Hp = Darkdrake_Hp_Max;
int Darkdrake_Mp = Darkdrake_Mp_Max;
int Darkdrake_Xp = Darkdrake_Xp_Max;
// 블랙드래곤 레이어스 //
int Blackdragon_Level = 100;
int Blackdragon_Exp = 13547141;
int Blackdragon_Str = 146;
int Blackdragon_Int = 326;
int Blackdragon_Dex = 249;
int Blackdragon_Hp_Max = 1127 * Blackdragon_Level;
int Blackdragon_Mp_Max = 24 * Blackdragon_Level;
int Blackdragon_Xp_Max = 9 * Blackdragon_Level;
int Blackdragon_Hp = Blackdragon_Hp_Max;
int Blackdragon_Mp = Blackdragon_Mp_Max;
int Blackdragon_Xp = Blackdragon_Xp_Max;
//////////////////////////////////////////////////////




//////////////////////////////데미지 선언////////////////////
///////////유저/////////
int Basic_Dg = 0;  
int Ulti_Skill_Dg = 0;
int Magic_Dg = 0;
int Critical_Dg = 0;   //크리티컬
///////슬라임1/////////////
int Slime1_Basic_Dg = 0;
int Slime1_Ulti_Skill_Dg = 0;
int Slime1_Magic_Dg = 0;
int Slime1_Critical_Dg = 0;  //크리티컬
/////////검은 드레이크///////////////
int Darkdrake_Basic_Dg = 0;
int Darkdrake_Ulti_Skill_Dg = 0;
int Darkdrake_Magic_Dg = 0;
int Darkdrake_Critical_Dg = 0;  //크리티컬
///////블랙드래곤 레이어스 //////////
int Blackdragon_Basic_Dg = 0;
int Blackdragon_Ulti_Skill_Dg = 0;
int Blackdragon_Magic_Dg = 0;
int Blackdragon_Critical_Dg = 0;  //크리티컬
/////////////////// 방어력 공식  //////////////////////
int defence = 0;  //바빠서 안만들었음...
////////////////////////////////////////////////////////////
/////////////////////////////레벨업시 능력치 오르는 양///////////////////////////////////
void G_Hp_Max()
{
User.Hp_Max = User.Hp_Max + 20 + (User.Level * User.Str / 2);
User.Mp_Max = User.Mp_Max + 10 + ((User.Level + 5) * User.Int / 2);
User.Xp_Max = User.Xp_Max + User.Level * (User.Dex / 3);
///레벨업시 체력회복//
User.Hp = User.Hp_Max; //체력 완전회복
User.Mp = User.Mp_Max; //마력 완전회복
}
///////////////////////////데미지 공식 //////////////////////////////////////////////////
void G_Damage()
{
//////////////유저/////////////////
Basic_Dg = User.Str*2 + User.Dex;
Magic_Dg = (User.Int * 7 + 15)/2;
Ulti_Skill_Dg = (User.Str + 3) * (User.Int + 3) * (User.Dex + 3) / 7;
Critical_Dg = (Ulti_Skill_Dg + (2 * User.Str)) / 2;
/////////////////슬라임1///////////////////////
Slime1_Basic_Dg = Slime1_Str + 6 + Slime1_Dex - defence;
Slime1_Ulti_Skill_Dg = (Slime1_Str + 1) * (Slime1_Int + 1) * (Slime1_Dex + 1) / 6;
Slime1_Magic_Dg = Slime1_Int * 2 + 15;
Slime1_Critical_Dg = Slime1_Ulti_Skill_Dg / 2;
//////////////검은 드레이크////////////////////////////
Darkdrake_Basic_Dg = Darkdrake_Str + 6 + Darkdrake_Dex - defence;
Darkdrake_Ulti_Skill_Dg = (Darkdrake_Str + 1) * (Darkdrake_Int + 1) * (Darkdrake_Dex + 1) / 6;
Darkdrake_Magic_Dg = Darkdrake_Int * 2 + 15;
Darkdrake_Critical_Dg = Darkdrake_Ulti_Skill_Dg / 2;
//////////////블랙 드래곤 레이어스////////////////////////////
Blackdragon_Basic_Dg = Blackdragon_Str + (Blackdragon_Level * 6) + Blackdragon_Dex - defence;
Blackdragon_Ulti_Skill_Dg = (Blackdragon_Str + 1) * (Blackdragon_Int + 1) * (Blackdragon_Dex + 1) / 6;
Blackdragon_Magic_Dg = Blackdragon_Int * 2 + 15;
Blackdragon_Critical_Dg = Blackdragon_Ulti_Skill_Dg / 2;
}

void Stat_Display()
{
if(User.Jobs == 1)
printf("캐릭터 직업 : 검사\n");
if(User.Jobs == 2)
printf("캐릭터 직업 : 마법사\n");
if(User.Jobs == 3)
printf("캐릭터 직업 : 궁수\n");
if(User.Jobs == 9)
printf("********* 위대한 게임프로그래머 ********\n");
printf("레벨 : %d \n",User.Level);
printf("경험치 : %d / %d\n",User.Exp , User.Level*(200*User.Level));
printf("체력 : %d / %d \n",User.Hp ,User.Hp_Max);
printf("마력 : %d / %d \n",User.Mp ,User.Mp_Max);
printf("잠재력 : %d / %d \n\n",User.Xp ,User.Xp_Max);
printf("힘 :%d \n", User.Str);
printf("민첩성 :%d \n", User.Dex);
printf("지능 :%d \n\n", User.Int);
printf("기본 공격력 : %d \n",Basic_Dg);
printf("마법 공격력 : %d \n",Magic_Dg);
printf("궁극기술 공격력 : %d \n\n",Ulti_Skill_Dg);
printf("장착한 무기 : %d \n",W_Item[0]);
printf("장착한 방패 : %d \n",W_Item[1]);
printf("장착한 갑옷 : %d \n",W_Item[2]);
printf("장착한 투구 : %d \n",W_Item[3]);
printf("장착한 목걸이 : %d \n\n",W_Item[4]);
printf("소유중인 골드 : %d \n",User.Gold);
printf("      Total Point : %d \n",User.Point);
printf("\n캐릭터정보를 확인하셨다면 아무키나 누르세요.");
scanf_s("%d",&Nobody_Key);

}

void Display_Char_Story()    //시작시 캐릭터들의 이야기
{
if(Char_Choice==1)
{
printf("검사 - 엘리시스\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
printf("엘리시스 그녀는 어렸을적 블랙드래곤의 레이어스의 음모였던 데스플랜에서\n");
printf("희생양으로 부모를 잃고 레드 드래곤의 수장 아이야스에게 입양되었다.\n");
printf("자라면서 별 다른 재능이 없던 엘리시스에게 아이야스는 자신의 검술을 가르쳤고\n");
printf("블랙 드래곤에게 복수하기 위하여 엘리시스는 피나는 수련을 하게된다.\n");
printf("그 후 엘리시스는 아이야스식 횡검류를 발전시켜 드레샤제국의 최고의 검객이 된다.\n");
printf("하지만 그녀는 블랙드래곤 레이어스를 죽이기 위하여 끊임없이 수련한다.\n");
printf("\n 아무키나 입력하시고 엔터를 눌러주세요.");
scanf_s("%d",&Nobody_Key);
}
if(Char_Choice==2)
{
printf("마도사 - 레이트리\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
printf("레이랑숲 작은 개울에 검은 그림자가 들어섰다. 블랙드래곤 레이어스는\n");
printf("자신의 계획을 위하여 레이랑숲의 엘프들에게 차원의 문에 대한 지식을 요구하지만\n");
printf("엘프들은 레이어스의 계획의 결과가 좋지 못하다는 것을 알고 레이어스의 요청을\n");
printf("거부한다. 그 결과 레이어스는 엘프들을 얼리고 자신의 레어에 봉인시켜 놓는다.");
printf("하지만 레이어스가 엘프들을 냉동시키려고 할 당시 하이엘프 라이네르는 레이트리를\n");
printf("드레샤 제국으로 순간이동 시킨다.\n");
printf("\n 아무키나 입력하시고 엔터를 눌러주세요.");
scanf_s("%d",&Nobody_Key);
}
if(Char_Choice == 3)
{
printf("         비밀스러운 엘프궁수\n\n\n");
printf("\n아무키나 입력하시고 엔터를 눌러주세요.\n\n");
scanf_s("%d",&Nobody_Key);
}
if(Char_Choice == 9)
{
printf(" \n\n\n\n\n\n\n\n\n                     게임프로그래머를 선택합니다.\n\n\n\n\n\n\n\n\n\n\n");
printf("  메모리값을 수정하여 힘 +900\n\n\n\n\n\n\n\n\n\n\n");
User.Str = User.Str + 900;
User.Hp_Max = User.Hp_Max + 9620 + (User.Level * User.Str / 2);
User.Hp = User.Hp_Max;
printf("\n 아무키나 입력하시고 엔터를 눌러주세요.");
scanf_s("%d",&Nobody_Key);
}
}

void G_Choice()
{
switch(Char_Choice)
{
case 1:
  printf("----------엘리시스(검사)를 선택하셨습니다.----------\n\n\n\n");
  User.Jobs = 1;
  User.Str = User.Str+15;
  User.Dex = User.Dex+5;
  User.Int = User.Int+2;
  User.Hp_Max = User.Hp_Max+50;
  User.Hp = User.Hp+50;
break;
case 2:
  printf("----------레이트리(마도사)를 선택하셨습니다.----------\n\n\n\n");
  User.Jobs = 2;
  User.Str = User.Str+3;
  User.Dex = User.Dex+3;
  User.Int = User.Int+15;
  User.Hp_Max = User.Hp_Max+20;
  User.Mp_Max = User.Mp_Max+60;
  User.Hp = User.Hp + 20;
  User.Mp = User.Mp + 60;
break;
case 3:
  printf("----------리르(궁수)를 선택하셨습니다.----------\n\n\n\n");
  User.Jobs = 3;
  User.Str = User.Str+8;
  User.Dex = User.Dex+15;
  User.Int = User.Int+3;
  User.Hp_Max = User.Hp_Max+30;
  User.Mp_Max = User.Mp_Max+20;
  User.Hp = User.Hp + 30;
  User.Mp = User.Mp + 20;
break;
case 9:
  printf("*********** 위대한 게임프로그래머 ************\n\n\n\n");
  User.Jobs = 9;
}
}

void F_Display()
{
printf("┌─────────────────────────────────────┐\n");
printf("│                                                                    \n");
printf("│                                                                          \n");
printf("│                       드래곤 헌터에 오신것을 환영합니다.     \n");
printf("│                                                                          \n");
printf("│                                                          Made By 한종태  \n");
printf("│                                                                      \n");
printf("│                            직업을 선택해주세요               \n");
printf("│                                                                       \n");
printf("│                                                                     \n");
printf("│                                                                          \n");
printf("│      검사 /  마도사 / 궁수  /  (게임프로그래머 힘+900)        \n");
printf("│                                                                          \n");
printf("│                                                                          \n");
printf("│검사               파워크래쉬        =      미구현\n");
printf("│마도사             힐링스킬          =      미구현\n");
printf("│궁수               패시브 회피       =      구현\n");
printf("│                                                                          \n");
printf("│***********************************************************************\n");
printf("│*    이 게임은 숫자키만 사용하여 플레이하는 방식의 게임입니다.        *\n");
printf("│*    키보드 오른쪽의 넘버패드를 사용하시면 간단하게 즐길수 있습니다.  *\n");
printf("│***********************************************************************\n");
printf("└─────────────────────────────────────┘\n");
printf("(1.검사 2.마도사 3.궁수 9.게임프로그래머) 직업을 선택 : ");
scanf_s("%d",&Char_Choice);  // 캐릭터 선택

printf("\n\n\n\n\n\n\n\n\n\n\n\n\n                                                         캐릭터 생성중...\n"); //로딩중... 출력
Sleep(000);
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n                                                          LOADING......\n"); //로딩중... 출력

//Sleep(2000);
}

void  ChoiceMap()
{
Sleep(500);
printf("지역을 이동하겠습니다.\n");
printf("┌─────────────────시스템──────────────────\n");
printf("│                                                  현재 HP : %d / %d\n",User.Hp ,User.Hp_Max);
printf("│                                                  현재 MP : %d / %d\n",User.Mp ,User.Mp_Max);
printf("│                                                  현재 Gold  : %d \n",User.Gold);
printf("│                                                  현재 Point : %d \n",User.Point);
printf("│                                                                          \n");
printf("│                                                                          \n");
printf("│                                                                          \n");
printf("│                                                                          \n");
printf("│                                                                          \n");
printf("│                                                                          \n");
printf("│                                                                          \n");
printf("│                                                                          \n");
printf("│                                                                          \n");
printf("│                                                                          \n");
printf("│                                                                          \n");
printf("│                                                                          \n");
printf("│                                                                          \n");
printf("│                                                                          \n");
printf("└──────────────────────────────────────\n");
printf(" 1. 슬라임의 숲 2. 검은 드레이크의 동굴 3. 드래곤의 레어\n 4. (완전치료 : 80 Gold)          5. 아이템[미구현]\n");
printf(" 6. 캐릭터 정보보기   7.게임종료\n");
scanf_s("%d",&Map_N);

//Sleep(000);
if(Map_N == 1)
{
printf("\n\n\n\n\n\n\n\n\n\n\n\n슬라임1 을 만났습니다. \n");
}
if(Map_N == 2)
{
printf("\n\n\n\n\n\n\n\n\n\n\n\n검은 드레이크를 만났습니다. \n");
}
  if(Map_N == 3)
{
printf("\n\n\n\n\n\n\n\n\n\n\n\n블랙 드래곤 레이어스를 만났습니다. \n");
}
if(Map_N == 4)
{
  printf("\n완전회복 소모골드는 80골드 입니다. 골드 보유량 : %d \n\n",User.Gold - 80);
  if(User.Gold >= 80)
  {
User.Hp = User.Hp_Max; //체력 완전회복
User.Mp = User.Mp_Max; //마력 완전회복
User.Gold = User.Gold - 80;
Stat_Display();
  }
  if(User.Gold < 80)
  {
  printf("\n                          골드가 부족합니다.\n\n");
  Sleep(1500);
  Stat_Display();
  
  }
}
if(Map_N == 6)
{
Stat_Display();
}
}
void Level_Up()
{
if(User.Exp > User.Level*(200*User.Level))
{
printf("\n\n\n\n\n\n\n\n *레벨 업 하셨습니다.* \n\n");
User.Level = User.Level + 1;
printf("+3의 스탯을 추가 하실수있습니다.\n\n");
User.Stat_P = User.Stat_P + 3;
for( int i = 0 ; i <3 ; i++)
{
printf("현재 능력치 : 힘 %d      민첩성 %d      지능 %d\n\n", User.Str, User.Dex, User.Int);
printf("어떤 능력치를 올리겠습니까?       1. 힘   2. 민첩성  3. 지능\n");

scanf_s("%d",&Choice_Stat);

switch(Choice_Stat)
{
case 1:
User.Str = User.Str + 1;
break;
case 2:
User.Dex = User.Dex + 1;
break;
case 3:
User.Int = User.Int + 1;
break;
}
}
G_Damage();
G_Hp_Max();
printf("\n\n           캐릭터 정보를 보시겠습니까?       1.본다 2.보지않는다.\n\n");
scanf_s("%d",&Char_Stat_Display);

if(Char_Stat_Display == 1)
Stat_Display(); // 스탯 출력
}
}

void Battle_Display_Slime1()
{
  printf("          ┌ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ 몬스터 ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ\n");
  printf("            체력: %d / %d     마력 : %d / %d         몬스터:  슬라임1  \n", Slime1_Hp, Slime1_Hp_Max, Slime1_Mp,Slime1_Mp_Max);
  printf("            기본 공격력: %d    궁극 기술 공격력 : %d   \n", Slime1_Basic_Dg, Slime1_Ulti_Skill_Dg);
  printf("            마법 공격력: %d    죽일시 획득 경험치 : %d  \n", Slime1_Magic_Dg, Slime1_Exp);
  printf("          └ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ\n\n");
  printf("ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ플레이어ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ┐\n");
  if(User.Jobs==1)
  printf("Level : %d          경험치 %d           엘리시스 (초보 검사)  \n", User.Level, User.Exp);
  if(User.Jobs==2)
  printf("Level : %d          경험치 %d           레이트리 (초보 마도사)  \n", User.Level, User.Exp);
  if(User.Jobs==3)
  printf("Level : %d          경험치 %d           리르 (초보 궁수)      \n", User.Level, User.Exp);
  printf("체력: %d / %d    마력 : %d / %d     Xp = %d   \n", User.Hp, User.Hp_Max, User.Mp, User.Mp_Max, User.Xp);
  printf("기본 공격력: %d    마법 공격력: %d ", Basic_Dg, Magic_Dg);
  printf("   궁극 기술 공격력 : %d    \n방어력 : %d         소지금 : %d\n", Ulti_Skill_Dg,defence ,User.Gold);
  printf("ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ┘\n\n");
}
void Battle_Display_Darkdrake()
{
  printf("          ┌ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ 몬스터 ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ\n");
  printf("            체력: %d / %d     마력 : %d / %d      몬스터:  검은 드레이크  \n", Darkdrake_Hp, Darkdrake_Hp_Max, Darkdrake_Mp,Darkdrake_Mp_Max);
  printf("            기본 공격력: %d    궁극 기술 공격력 : %d   \n", Darkdrake_Basic_Dg, Darkdrake_Ulti_Skill_Dg);
  printf("            마법 공격력: %d    죽일시 획득 경험치 : %d  \n", Darkdrake_Magic_Dg, Darkdrake_Exp);
  printf("          └ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ\n\n");
  printf("ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ플레이어ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ┐\n");
  if(User.Jobs==1)
  printf("Level : %d          경험치 %d           엘리시스 (초보 검사)  \n", User.Level, User.Exp);
  if(User.Jobs==2)
  printf("Level : %d          경험치 %d           레이트리 (초보 마도사)  \n", User.Level, User.Exp);
  if(User.Jobs==3)
  printf("Level : %d          경험치 %d           리르 (초보 궁수)      \n", User.Level, User.Exp);
  printf("체력: %d / %d    마력 : %d / %d     Xp = %d   \n", User.Hp, User.Hp_Max, User.Mp, User.Mp_Max, User.Xp);
  printf("기본 공격력: %d    마법 공격력: %d ", Basic_Dg, Magic_Dg);
  printf("   궁극 기술 공격력 : %d    \n방어력 : %d         소지금 : %d\n", Ulti_Skill_Dg,defence ,User.Gold);
  printf("ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ┘\n\n");
}
void Battle_Display_Blackdragon()
{
  printf("┌ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ 몬스터 ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ\n");
  printf(" 체력: %d / %d     마력 : %d / %d     몬스터:  블랙 드래곤(레이어스)\n", Blackdragon_Hp, Blackdragon_Hp_Max, Blackdragon_Mp,Blackdragon_Mp_Max);
  printf(" 기본 공격력: %d    드래곤 브레스 공격력 : %d   \n", Blackdragon_Basic_Dg, Blackdragon_Ulti_Skill_Dg);
  printf(" 마법 공격력: %d    경험치 : %d  \n", Blackdragon_Magic_Dg, Blackdragon_Exp);
  printf("└ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ\n\n");
  printf("ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ플레이어ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ┐\n");
  if(User.Jobs==1)
  printf("Level : %d          경험치 %d           엘리시스 (초보 검사)  \n", User.Level, User.Exp);
  if(User.Jobs==2)
  printf("Level : %d          경험치 %d           레이트리 (초보 마도사)  \n", User.Level, User.Exp);
  if(User.Jobs==3)
  printf("Level : %d          경험치 %d           리르 (초보 궁수)      \n", User.Level, User.Exp);
  printf("체력: %d / %d    마력 : %d / %d     Xp = %d   \n", User.Hp, User.Hp_Max, User.Mp, User.Mp_Max, User.Xp);
  printf("기본 공격력: %d    마법 공격력: %d ", Basic_Dg, Magic_Dg);
  printf("   궁극 기술 공격력 : %d    \n방어력 : %d         소지금 : %d\n", Ulti_Skill_Dg,defence ,User.Gold);
  printf("ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ┘\n\n");
}
void Mop_Death_Slime1()
{
///////////////슬라임1 죽음////////////
if(Slime1_Hp < 0)
{
printf("슬라임1이 죽었습니다.\n\n");
Sleep(1500);
User.Exp = User.Exp + Slime1_Exp;
User.Gold = User.Gold + 461;
User.Point = User.Point + (Basic_Dg+(Ulti_Skill_Dg / 12)+Magic_Dg)*Slime1_Level;

Level_Up();


//Sleep(1000);
if(User.Xp < User.Xp_Max-1)
User.Xp = User.Xp + 1;
Slime1_Hp = Slime1_Hp_Max;  // 몹 체력회복
}

//////////////////////////////////////

}
void Mop_Death_Darkdrake()
{
///////////////검은드레이크 죽음////////////
if(Darkdrake_Hp < 0)
{
printf("검은 드레이크가 죽었습니다.\n\n");
Sleep(1500);
User.Exp = User.Exp + Darkdrake_Exp;
User.Gold = User.Gold + 461;
User.Point = User.Point + (Basic_Dg+(Ulti_Skill_Dg / 12)+Magic_Dg)*Darkdrake_Level;

Level_Up();


//Sleep(1000);
if(User.Xp < User.Xp_Max-1)
User.Xp = User.Xp + 1;
Darkdrake_Hp = Darkdrake_Hp_Max;  // 몹 체력회복
}
//////////////////////////////////////
}
void Mop_Death_Blackdragon()
{
///////////////블랙드래곤 레이어스의 죽음////////////
if(Blackdragon_Hp < 0)
{
printf("블랙 드래곤 레이어스가 죽었습니다.\n\n");
Sleep(1500);
User.Exp = User.Exp + Blackdragon_Exp;
User.Gold = User.Gold + 321416461;
User.Point = User.Point + (Basic_Dg+(Ulti_Skill_Dg / 12)+Magic_Dg)*Blackdragon_Level*3;

Level_Up();


//Sleep(1000);
if(User.Xp < User.Xp_Max-1)
User.Xp = User.Xp + 1;
Blackdragon_Hp = Blackdragon_Hp_Max;  // 몹 체력회복
}
//////////////////////////////////////
}
//////////////주인공죽음/////////////
void GameOver()
{
return;
}
void Char_Death()
{
if(User.Hp < 0)
{
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n      불쌍한 주인공이 멍청한 당신때문에 죽었습니다.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
User.Gold = 0;
printf("레벨 : 5 이상일 경우 레벨에 비례하여 %d 경험치가 감소합니다.\n",((User.Level+2)*100)*6);
printf("갖고있던 돈을 모두 잃어버렸습니다.   \n");
Sleep(2000);
if(User.Level >= 5)   // 레벨이 수보다 높을때 경험치 감소 + (포인트 감소 if문)
{
  printf("\n경험치 감소 : - %d\n\n",((User.Level+2)*100)*6); //경험치 감소량 출력
  User.Exp = User.Exp - ((User.Level+2)*100)*6;
  if(User.Point >= (User.Level*20000))   // 포인트가 이것보다 높을때 감소
  {
printf("\n포인트 감소 : - %d\n\n",User.Level*20000);  //포인트 감소량 출력


User.Point = User.Point - (User.Level*20000);    //포인트 감소량


}

}


//Sleep(5000);    //대기시간
User.Hp = User.Hp_Max;  // 주인공 체력회복
Stat_Display();   //캐릭터 정보 보여주기
//return ChoiceMap();  
}

}
void B_Battle_Slime1()
{
  printf("\n전투중...\n\n\n");
  
  Char_Death();
  Battle_Display_Slime1();
/////////////// 랜덤함수사용 ////////////////
srand( (unsigned)time(NULL));
int Dg_Five[Cri_20],Dg_Critical[Cri_6];    //데미지오차
for(int i = 0 ; i < Cri_20 ; i++)
Dg_Five[i] = i;   //난수 발생
for( int i = 0; i < Cri_20; i++)
{
int x1 = rand()%Cri_20;
int x2 = rand()%Cri_20;
// swap 알고리즘
int tmp = Dg_Five[x1];
Dg_Five[x1] = Dg_Five[x2];
Dg_Five[x2] = tmp;
}


for(int i = 0 ; i < Cri_6 ; i++)
Dg_Critical[i] = i;   //난수 발생
for( int i = 0; i < Cri_6; i++)
{
int x3 = rand()%Cri_6;
int x4 = rand()%Cri_6;
// swap 알고리즘
int tmp = Dg_Critical[x3];
Dg_Critical[x3] = Dg_Critical[x4];
Dg_Critical[x4] = tmp;
}

  printf("1. 기본 공격           2. 마법 공격\n\n");
  printf("3. 궁극스킬 사용       4. 도망치다         ");
  scanf_s("%d",&B_Choice);
  printf("\n");
  switch(B_Choice)
  {
  case 1:
   if(Dg_Critical[1] == 1)
   {
   printf("***크리티컬 히트!***    추가 데미지 + %d\n", Critical_Dg + Dg_Five[19]);
   Slime1_Hp = Slime1_Hp - Critical_Dg;
   }
  if(User.Jobs==1)
  printf("엘리시스");
  if(User.Jobs==2)
  printf("레이트리");
  if(User.Jobs==3)
  printf("리르");
   printf("가 슬라임1에게 %d의 피해를 입혔습니다.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n",Basic_Dg + Dg_Five[19]);
   Slime1_Hp = Slime1_Hp - Basic_Dg - Dg_Five[19];
   Sleep(1150);
  break;
  case 2:
   if(User.Mp < 65)
   {
   printf("마력이 부족합니다.\n\n");
   return B_Battle_Slime1();
   }
   if(User.Mp >= 65)
   {
   printf("파이어볼을 시전합니다.\n");
   if(Dg_Critical[1] == 1)
   {
   printf("***크리티컬 히트!***  데미지 : %d\n", Critical_Dg + Dg_Five[19]);
   Slime1_Hp = Slime1_Hp - Critical_Dg;
   }
  if(User.Jobs==1)
  printf("엘리시스");
  if(User.Jobs==2)
  printf("레이트리");
  if(User.Jobs==3)
  printf("리르");
   printf("가 슬라임1에게 %d의 피해를 입혔습니다.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n",Magic_Dg + Dg_Five[19]);
   Slime1_Hp = Slime1_Hp - Magic_Dg - Dg_Five[19];
   Sleep(1150);
   }
   User.Mp = User.Mp - 65;
  break;
  case 3:
if(User.Xp >= 8)
{
if(Dg_Critical[1] == 1)
{
printf("***크리티컬 히트!***  데미지 : %d\n", Critical_Dg + Dg_Five[19]);
Slime1_Hp = Slime1_Hp - Critical_Dg;
}
printf("\n\n\n\n\n\n\n\n\n\n잠재된 궁극의 힘을 개방하여 공격합니다.\n\n");
  if(User.Jobs==1)
  printf("엘리시스");
  if(User.Jobs==2)
  printf("레이트리");
  if(User.Jobs==3)
  printf("리르");
  printf("가 슬라임1에게 %d의 피해를 주었습니다.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n",Ulti_Skill_Dg + Dg_Five[19]);
   Slime1_Hp = Slime1_Hp - Ulti_Skill_Dg - Dg_Five[19];
   Sleep(1150);
}
   if(User.Xp < 8)
   {
   printf("\nXp가 부족합니다.\n\n");
   return B_Battle_Slime1();
   }
   User.Xp = User.Xp - 8;
  

  break;
  case 4:
   //if(Level >= Slime1_Level)
   //{
   printf("\n\n도망쳤습니다.\n\n\n");
   return;
   //}
   //if(Level < Slime1_Level)
   //{
   //printf("\n몬스터의 레벨이 더높아 도망칠수 없습니다.\n\n");
   //return B_Battle_Slime1();
   //}
   break;
  }
  
  
  if(Slime1_Hp > 0)
  {
  printf("슬라임1이 공격합니다.\n\n");
  
  if(User.Jobs == 3)
  if(Dg_Critical[0] == 1)
  {
  printf("*** 패시브 스킬 발동 ***  몬스터의 공격을 회피합니다.\n\n");
  return B_Battle_Slime1();
}
  if(User.Jobs==1)
  printf("엘리시스");
  if(User.Jobs==2)
  printf("레이트리");
  if(User.Jobs==3)
  printf("리르");
  
  printf("가 슬라임으로부터 %d의 피해를 입었습니다.\n\n",Slime1_Basic_Dg + Dg_Five[19]);
  User.Hp = User.Hp - Slime1_Basic_Dg - Dg_Five[19];  //몬스터로부터 피해를 입음
  
}
  Mop_Death_Slime1();
  return B_Battle_Slime1();
  
  

}
void B_Battle_Darkdrake()
{
  printf("\n전투중...\n\n\n");
  
  Char_Death();
  Battle_Display_Darkdrake();
/////////////// 랜덤함수사용 ////////////////
srand( (unsigned)time(NULL));
int Dg_Five[Cri_20],Dg_Critical[Cri_6];    //데미지오차
for(int i = 0 ; i < Cri_20 ; i++)
Dg_Five[i] = i;   //난수 발생
for( int i = 0; i < Cri_20; i++)
{
int x1 = rand()%Cri_20;
int x2 = rand()%Cri_20;
// swap 알고리즘
int tmp = Dg_Five[x1];
Dg_Five[x1] = Dg_Five[x2];
Dg_Five[x2] = tmp;
}


for(int i = 0 ; i < Cri_6 ; i++)
Dg_Critical[i] = i;   //난수 발생
for( int i = 0; i < Cri_6; i++)
{
int x3 = rand()%Cri_6;
int x4 = rand()%Cri_6;
// swap 알고리즘
int tmp = Dg_Critical[x3];
Dg_Critical[x3] = Dg_Critical[x4];
Dg_Critical[x4] = tmp;
}

  printf("1. 기본 공격           2. 마법 공격\n\n");
  printf("3. 궁극스킬 사용       4. 도망치다         ");
  scanf_s("%d",&B_Choice);
  printf("\n");
  switch(B_Choice)
  {
  case 1:
   if(Dg_Critical[1] == 1)
   {
   printf("***크리티컬 히트!***    추가 데미지 + %d\n", Critical_Dg + Dg_Five[19]);
   Darkdrake_Hp = Darkdrake_Hp - Critical_Dg;
  
   }
  if(User.Jobs==1)
  printf("엘리시스");
  if(User.Jobs==2)
  printf("레이트리");
  if(User.Jobs==3)
  printf("리르");
   printf("가 검은 드레이크에게 %d의 피해를 입혔습니다.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n",Basic_Dg + Dg_Five[19]);
   Darkdrake_Hp = Darkdrake_Hp - Basic_Dg - Dg_Five[19];
   Sleep(1150);
  
  break;
  case 2:
   if(User.Mp < 65)
   {
   printf("마력이 부족합니다.\n\n");
   return B_Battle_Darkdrake();
   }
   if(User.Mp >= 65)
   {
   printf("파이어볼을 시전합니다.\n");
   if(User.Jobs==1)
  printf("엘리시스");
  if(User.Jobs==2)
  printf("레이트리");
  if(User.Jobs==3)
  printf("리르");
   printf("가 검은드레이크에게 %d의 피해를 입혔습니다.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n",Magic_Dg + Dg_Five[19]);
   if(Dg_Critical[1] == 1)
   {
   printf("***크리티컬 히트!***  데미지 : %d\n", Critical_Dg + Dg_Five[19]);
   Darkdrake_Hp = Darkdrake_Hp - Critical_Dg;
   }
   Darkdrake_Hp = Darkdrake_Hp - Magic_Dg - Dg_Five[19];
   Sleep(1150);
   }
   User.Mp = User.Mp - 65;
  break;
  case 3:
if(User.Xp >= 8)
{
if(Dg_Critical[1] == 1)
{
printf("***크리티컬 히트!***  데미지 : %d\n", Critical_Dg + Dg_Five[19]);
Darkdrake_Hp = Darkdrake_Hp - Critical_Dg;
}
printf("\n\n\n\n\n\n\n\n\n\n잠재된 궁극의 힘을 개방하여 공격합니다.\n\n");
  if(User.Jobs==1)
  printf("엘리시스");
  if(User.Jobs==2)
  printf("레이트리");
  if(User.Jobs==3)
  printf("리르");
  printf("가 검은드레이크에게 %d의 피해를 주었습니다.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n",Ulti_Skill_Dg + Dg_Five[19]);
   Darkdrake_Hp = Darkdrake_Hp - Ulti_Skill_Dg - Dg_Five[19];
   Sleep(1150);
}
   if(User.Xp < 8)
   {
   printf("\nXp가 부족합니다.\n\n");
   return B_Battle_Darkdrake();
   }
   User.Xp = User.Xp - 8;
  

  break;
  case 4:
   //if(Level >= Darkdrake_Level)
   //{
   printf("\n\n도망쳤습니다.\n\n\n");
   return;
   //}
   //if(Level < Darkdrake_Level)
   //{
   //printf("\n몬스터의 레벨이 더높아 도망칠수 없습니다.\n\n");
   //return B_Battle_Darkdrake();
   //}
   break;
  }
  
  
  if(Darkdrake_Hp > 0)
  {
  printf("검은드레이크가 공격합니다.\n\n");
  
  if(User.Jobs == 3)
  if(Dg_Critical[0] == 1)
  {
  printf("*** 패시브 스킬 발동 ***  몬스터의 공격을 회피합니다.\n\n");
  return B_Battle_Darkdrake();
}
  if(User.Jobs==1)
  printf("엘리시스");
  if(User.Jobs==2)
  printf("레이트리");
  if(User.Jobs==3)
  printf("리르");
  
  printf("가 검은드레이크에게 %d의 피해를 입었습니다.\n\n",Darkdrake_Basic_Dg + Dg_Five[19]);
  User.Hp = User.Hp - Darkdrake_Basic_Dg - Dg_Five[19];  //몬스터로부터 피해를 입음
  
}
  Mop_Death_Darkdrake();
  return B_Battle_Darkdrake();
  

}

//////////////////////////블랙드래곤 레이어스와 전투///////////////////////////////////
void B_Battle_Blackdragon()
{
  printf("\n전투중...\n\n\n");
  
  Char_Death();
Battle_Display_Blackdragon();
/////////////// 랜덤함수사용 ////////////////
srand( (unsigned)time(NULL));
int Dg_Five[Cri_20],Dg_Critical[Cri_6];    //데미지오차
for(int i = 0 ; i < Cri_20 ; i++)
Dg_Five[i] = i;   //난수 발생
for( int i = 0; i < Cri_20; i++)
{
int x1 = rand()%Cri_20;
int x2 = rand()%Cri_20;
// swap 알고리즘
int tmp = Dg_Five[x1];
Dg_Five[x1] = Dg_Five[x2];
Dg_Five[x2] = tmp;
}


for(int i = 0 ; i < Cri_6 ; i++)
Dg_Critical[i] = i;   //난수 발생
for( int i = 0; i < Cri_6; i++)
{
int x3 = rand()%Cri_6;
int x4 = rand()%Cri_6;
// swap 알고리즘
int tmp = Dg_Critical[x3];
Dg_Critical[x3] = Dg_Critical[x4];
Dg_Critical[x4] = tmp;
}

  printf("1. 기본 공격           2. 마법 공격\n\n");
  printf("3. 궁극스킬 사용       4. 도망치다         ");
  scanf_s("%d",&B_Choice);
  printf("\n");
  switch(B_Choice)
  {
  case 1:
   if(Dg_Critical[1] == 1)
   {
   printf("***크리티컬 히트!***    추가 데미지 + %d\n", Critical_Dg + Dg_Five[19]);
   Blackdragon_Hp = Blackdragon_Hp - Critical_Dg;
  
   }
  if(User.Jobs==1)
  printf("엘리시스");
  if(User.Jobs==2)
  printf("레이트리");
  if(User.Jobs==3)
  printf("리르");
  if(User.Jobs==9)
  printf("게임프로그래머");
   printf("가 블랙드래곤에게 %d의 피해를 입혔습니다.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n",Basic_Dg + Dg_Five[19]);
   Blackdragon_Hp = Blackdragon_Hp - Basic_Dg - Dg_Five[19];
   Sleep(1150);
  
  break;
  case 2:
   if(User.Mp < 65)
   {
   printf("마력이 부족합니다.\n\n");
   return B_Battle_Blackdragon();
   }
   if(User.Mp >= 65)
   {
   printf("파이어볼을 시전합니다.\n");
   if(User.Jobs==1)
  printf("엘리시스");
  if(User.Jobs==2)
  printf("레이트리");
  if(User.Jobs==3)
  printf("리르");
  if(User.Jobs==9)
  printf("게임프로그래머");
   printf("가 블랙드래곤에게 %d의 피해를 입혔습니다.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n",Magic_Dg + Dg_Five[19]);
   if(Dg_Critical[1] == 1)
   {
   printf("***크리티컬 히트!***  데미지 : %d\n", Critical_Dg + Dg_Five[19]);
   Blackdragon_Hp = Blackdragon_Hp - Critical_Dg;
   }
   Blackdragon_Hp = Blackdragon_Hp - Magic_Dg - Dg_Five[19];
   Sleep(1150);
   }
   User.Mp = User.Mp - 65;
  break;
  case 3:
if(User.Xp >= 8)
{
if(Dg_Critical[1] == 1)
{
printf("***크리티컬 히트!***  데미지 : %d\n", Critical_Dg + Dg_Five[19]);
Blackdragon_Hp = Blackdragon_Hp - Critical_Dg;
}
printf("\n\n\n\n\n\n\n\n\n\n잠재된 궁극의 힘을 개방하여 공격합니다.\n\n");
  if(User.Jobs==1)
  printf("엘리시스");
  if(User.Jobs==2)
  printf("레이트리");
  if(User.Jobs==3)
  printf("리르");
  if(User.Jobs==9)
  printf("게임프로그래머");
  printf("가 블랙드래곤에게 %d의 피해를 주었습니다.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n",Ulti_Skill_Dg + Dg_Five[19]);
   Blackdragon_Hp = Blackdragon_Hp - Ulti_Skill_Dg - Dg_Five[19];
   Sleep(1150);
}
   if(User.Xp < 8)
   {
   printf("\nXp가 부족합니다.\n\n");
   return B_Battle_Blackdragon();
   }
   User.Xp = User.Xp - 8;
  

  break;
  case 4:
   //if(Level >= Blackdragon_Level)
   //{
   printf("\n\n도망쳤습니다.\n\n\n");
   return;
   //}
   //if(Level < Blackdragon_Level)
   //{
   //printf("\n몬스터의 레벨이 더높아 도망칠수 없습니다.\n\n");
   //return B_Battle_Blackdragon();
   //}
   break;
  }
  
  
  if(Blackdragon_Hp > 0)
  {
  printf("레이어스가 공격합니다.\n\n");
  
  if(User.Jobs == 3)
  if(Dg_Critical[0] == 1)
  {
  printf("*** 패시브 스킬 발동 ***  레이어스의 공격을 회피합니다.\n\n");
  return B_Battle_Blackdragon();
}
  if(User.Jobs==1)
  printf("엘리시스");
  if(User.Jobs==2)
  printf("레이트리");
  if(User.Jobs==3)
  printf("리르");
  if(User.Jobs==9)
  printf("게임프로그래머");
  printf("가 블랙드래곤 레이어스로부터 %d의 피해를 입었습니다.\n\n",Blackdragon_Basic_Dg + Dg_Five[19]);
  User.Hp = User.Hp - Blackdragon_Basic_Dg - Dg_Five[19];  //몬스터로부터 피해를 입음
  
}
  Mop_Death_Blackdragon();
  return B_Battle_Blackdragon();
  

}

void main()
{

/////////////////////////////////////////////

F_Display(); // 첫화면
G_Choice(); // 캐릭터 선택
Display_Char_Story();
// CreateList(); // 링크드리스트 생성
G_Damage(); // 데미지 공식 적용

////////////////////////아이템[미구현] 생성 + 아이템[미구현] 착용/////////////////
if(Arm == 1)  
{
Basic_Dg = Basic_Dg + 10;
User.Str = User.Str + 2;
User.Hp_Max = User.Hp_Max + 10;
}
//////////////////////////////////////////////////////////////////


Stat_Display(); // 스탯 출력
for(;;)
{

ChoiceMap(); // 맵 선택


if(Map_N == 1)
B_Battle_Slime1();
if(Map_N == 2)
B_Battle_Darkdrake();
if(Map_N == 3)
B_Battle_Blackdragon();
if(Map_N == 7)
return;
}
printf("\n\n\n\n              ************** 게임을 종료합니다 *************");
}

  Hit : 10156     Date : 2013/07/15 04:38



    
leorld ㄷㄷ 신기하네여 2013/07/19  
jeongseok0 대단하십니다.,,. ㅎㅎ 2014/04/28  
ig0102 와 열심히하셨네 2018/12/04  
zades soma 와 2024/03/23