RPG游戏
這次代碼完全使用c++的特點寫的游戲,什么封裝,多態,繼承等等。遇到過問題,也遇到過快樂。一開始寫的時候挺辛苦的。完全沒有頭緒。而且封裝的權限問題把人的頭都弄大了。不過當完成后心里無比激動,也是蠻拼了(PS:感謝與我合作的小伙伴,給了我非常多的靈感)
感覺做的最成功的就是地圖類了,因為它完美的將所有東西都聯系在一起,變成一個整體。
源文件:
#include <windows.h> ?
#include <conio.h> ?
#include <iostream> ?
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <fstream>
#include <ctime>
using namespace std;
void color(int a)//顏色函數
{
?? ?SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),a);
}?
void gotoxy(int x, int y) ?
{ ?
? ? CONSOLE_SCREEN_BUFFER_INFO cs; ?
? ? HANDLE hConsoleOut = GetStdHandle(STD_OUTPUT_HANDLE); ?
? ? GetConsoleScreenBufferInfo(hConsoleOut, &cs); ?
? ? cs.dwCursorPosition.X = y; ?
? ? cs.dwCursorPosition.Y = x; ?
? ? SetConsoleCursorPosition(hConsoleOut, ??
? ? ? ? cs.dwCursorPosition); ?
}
#include "mon.h"
#include "怪物.h"
#include "wuqi.h"
#include "Role.h"?
#include "Map.h"
class Game
{
protected:
?? ?char name[20];
?? ?int visitCount;
public:
?? ?Game(char a[])
?? ?{
?? ??? ?visitCount = 0;
?? ??? ?strcpy(name,a);
?? ?}
?? ?char* GetName()
?? ?{
?? ??? ?return name;?
?? ?}
?? ?int GetVisitCount()
?? ?{
?? ??? ?return visitCount;
?? ?}
?? ?void addvisitCount();
?? ?void ShowName();
?? ?virtual void start() = 0;
?? ?/*friend bool cmp();*/
};
void Game::ShowName()
{
?? ?cout << name << endl;
}
class GGame1:public Game
{
private:
?? ?Map mmaapp;
public:
?? ?void beigan();
?? ?void start();
?? ?GGame1();
};
GGame1::GGame1():Game("RPG游戲")
{}
void GGame1::beigan()
{
?? ?color(8);
?? ?char a[1][239]={
?? ??? ?{" ? ?公元xx年,位于拉布斯大陸的兩個大國因爭奪資源引發沖突,戰爭一觸即發! ? ? ? ?而你 ? ---------- ?作為一名精英的雇傭兵,當然不會放過這個發財的機會, ? ? ? ? ?于是,為榮譽和欲望,你來到了戰爭中心,走進了那戰爭之潮當中......."
?? ??? ?}
?? ?};?
?? ?for(int i=0;i<239;i++)
?? ? {
?? ??? ? cout<<a[0][i];
?? ??? ? Sleep(50);
?? ? }
?? ?cout<<endl<<endl;
?? ?color(12);
?? ?char s[1][33]={{"戰爭 ? ? ? ? 卐 ? ? ? ? 之潮 ? ?"}};
?? ?cout<<" ? ? ? ? ? ? ? ? ? ? ? ?";
?? ?for(int i=0;i<33;i++)
?? ? {
?? ??? ? cout<<s[0][i];
?? ??? ? Sleep(90);
?? ? }
?? ?color(9);
?? ?cout<<endl<<endl<<endl<<endl;
?? ?cout<<" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?作者: Dennis.鋒"<<endl<<" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Alex.杰";
?? ?color(15);
?? ?cout<<endl<<endl<<endl<<endl<<" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? START --請按回車鍵繼續";
?? ?char k;
?? ?k=getch();
?? ?if(k==13)
?? ?{
?? ??? ?system("cls");
?? ??? ?gotoxy(0,0);
?? ?}
}
void GGame1::start()
{
?? ?visitCount++;
?? ?beigan();//開始界面
?? ?mmaapp.getpeople()->renwujianli();
?? ?int End=1;//判斷是否結束游戲且切換地圖
?? ?int srand((unsigned)time(NULL));?
?? ??? ?int f=rand()%5;
?? ??? ?while(End)
?? ??? ?{
?? ??? ??? ?switch(End)
?? ??? ??? ?{
?? ??? ??? ?case 1:
?? ??? ??? ??? ?End=mmaapp.map1();break;
?? ??? ??? ?case 2:
?? ??? ??? ??? ?End=mmaapp.map2();break;
?? ??? ??? ?case 3:
?? ??? ??? ??? ?End=mmaapp.map3();break;
?? ??? ??? ?case 4:
?? ??? ??? ??? ?End=mmaapp.map4();break;
?? ??? ??? ?case 5:
?? ??? ??? ??? ?End=mmaapp.map5();break;
?? ??? ??? ?}
?? ??? ?}
}
class GGame2:public Game
{
public:
?? ?virtual void start();
?? ?GGame2():Game("游戲2")
?? ?{
?? ?}
};
void GGame2::start()
{
?? ?visitCount++;
?? ?cout << "\t\t歡迎進入游戲2" << endl;
}
class GGame3:public Game
{
public:
?? ?virtual void start();
?? ?GGame3():Game("游戲3")
?? ?{
?? ?}
};
void GGame3::start()
{
?? ?visitCount++;
?? ?cout << "\t\t歡迎進入游戲3" << endl;
}
void menu(Game** gaems) // 顯示游戲列表
{
?? ?for (int i = 0; i < 3; i++)?
?? ?{
?? ??? ?printf("%d: ?",i+1);gaems[i]->ShowName();
?? ?}
}
void Sort(Game** p)
{
?? ?Game* temp;
?? ?for(int i=0;i<2;++i)
?? ?{
?? ??? ?for(int j=i+1;j<3;++j)
?? ??? ?{
?? ??? ??? ?if(p[i]->GetVisitCount()<p[j]->GetVisitCount())
?? ??? ??? ?{
?? ??? ??? ??? ?temp = p[i];
?? ??? ??? ??? ?p[i] = p[j];
?? ??? ??? ??? ?p[j] = temp;
?? ??? ??? ?}
?? ??? ?}
?? ?}
}
int main()
{
?? ?Game* games[3];//一開始忘記了指針數組就是二維數組,一直沒思路
?? ?games[0] = new GGame1;//為什么可以用基類指針數組來new一個派生類??
?? ?games[1] = new GGame2;
?? ?games[2] = new GGame3;
?? ?do
?? ?{
?? ??? ?cout << "請輸入你想玩的游戲?(1-3)" << endl;
?? ??? ?Sort(games); // 將游戲列表按訪問量排序
?? ??? ?//如何實現類指針數組的排序??
?? ??? ?
?? ??? ?menu(games);
?? ??? ?/*for(int i=0;i<3;++i)
?? ??? ?cout << games[i]->GetVisitCount() << endl;*/
?? ??? ?int choice;
?? ??? ?cin >> choice;
?? ??? ?// 用戶輸入選擇
?? ??? ?if (choice >= 1 && choice <= 3)
?? ??? ?{
?? ??? ??? ?int i = choice;
?? ??? ??? ?system("cls");
?? ??? ??? ?(*games[i-1]).start();
?? ??? ?}
?? ??? ?else
?? ??? ?{
?? ??? ??? ?break; // 退出系統
?? ??? ?}
?? ?} while (true);
}
一系列頭文件:
? ? ? ?Rloe角色:
class Role:public Monster
{
protected:
?? ?int Money;//金錢
?? ?int Ex;//經驗
?? ?int Lvup;//升級所需經驗
?? ?int Life;//生命總量
?? ?char name[10]; //玩家名字
?? ?int attckup;//攻擊成長值
?? ?int denfenup;//防守成長值
?? ?int lifeup;//生命成長值
?? ?int workrole;//職業代表數1-戰士 2-刺客 3-盾衛
?? ?int numA;//武器攻擊代號
?? ?int numB;//防具代號
?? ?int numL;//飾品代號(增加生命值)
?? ?char work[3][10];//職業
?? ?char a;//職業代號
?? ?int gwnamenum;//怪獸名編號,一開始用了Gwu的類新建個as變量,結果根本構造時都沒賦值,所以WA了
?? ?int x,y;//視圖坐標
?? ?int gwAT,gwFY;//儲存怪物攻擊力&防御力
?? ?Gwu* gw;
?? ?int flag;
?? ?int k,kk;//類里的Hp儲存起來變量
?? ?int wuqicount[10];
?? ?int wuqiA,wuqiB;
?? ?int num;
?? ?Equip eq[11];
public:
?? ?void up(int t);//升級系統
?? ?Role();//構造
?? ?void deleteGwu();//刪除動態申請空間
?? ?char* GetName();//角色名調用
?? ?char* Getwork();//角色職業調用
?? ?int GetEX();
?? ?int GetMoney();//第一個獲取錢,后面還有個獲取錢的就不改了
?? ?int getmoney1();//令外一個獲取錢
?? ?void addmoney(int a);
?? ?void usemoney(int a);
?? ?int getusemoney(int a);
?? ?void showRole();
?? ?void getnum();
?? ?void setnum(int a);
?? ?void attckadd(int a);
?? ?int getnumA();
?? ?int getnumB();
?? ?void Wuqicount(int a,int b);
?? ?int _wuqicount(int a);
?? ?void daoju();//道具
?? ?void CombatC();//戰斗地圖(一開始是放在地圖類里的,但是寫著就發現它更適合和戰斗函數一起)
?? ?void ul();//人物數據寫入,且新建怪物
?? ?int chiose();//打斗界面選擇
?? ?void oneattck();//單次戰斗
?? ?void Comjiemian();//自動戰斗
?? ?int Combat(int t);//戰斗函數,且控制結束條件
?? ?int COMBAT();//整合上面功能的函數
?? ?void renwujianli();//人物創建
};
void Role::renwujianli()
{
?? ?printf("請輸入玩家姓名\n");
?? ??? ?scanf("%s",name);
?? ??? ?printf("請輸入你選擇的職業\n");
?? ??? ?printf("1-戰士 2-刺客 3-盾衛\n");
?? ??? ?while(a=_getch())
?? ??? ?{
?? ??? ??? ?if(a=='1')
?? ??? ??? ?{
?? ??? ??? ??? ?attckup=5;
?? ??? ??? ??? ?denfenup=4;
?? ??? ??? ??? ?lifeup=5;
?? ??? ??? ??? ?workrole=0;
?? ??? ??? ?}
?? ??? ??? ?if(a=='2')
?? ??? ??? ?{
?? ??? ?
?? ??? ??? ??? ?attckup=7;
?? ??? ??? ??? ?denfenup=3;
?? ??? ??? ??? ?lifeup=3;
?? ??? ??? ??? ?workrole=1;
?? ??? ??? ?}
?? ??? ??? ?if(a=='3')
?? ??? ??? ?{
?? ??? ??? ??? ?attckup=3;
?? ??? ??? ??? ?denfenup=7;
?? ??? ??? ??? ?lifeup=7;
?? ??? ??? ??? ?workrole=2;
?? ??? ??? ?}
?? ??? ??? ?if(a=='1'||a=='2'||a=='3')break;
?? ??? ?}
?? ??? ?system("cls");
}
inline void Role::deleteGwu()
{
?? ?if(gw!=NULL)
?? ?{
?? ? ?delete gw;
?? ? ?gw = NULL;
?? ?}
}
inline void Role::CombatC()
{
?? ?system("cls");
?? ?char a[5][10]={{"攻擊"},{"魔法"},{"道具"},{"自動"},{"逃跑"}};
?? ?for(int i=0;i<5;++i)
?? ?{
?? ??? ?printf("██████\n");
?? ??? ?printf("█ ? %s █\n",a[i]);
?? ?}
?? ?printf("██████\n");
?? ?ifstream inf("map.txt");
?? ?gotoxy(17,0);
?? ?char c;
?? ?while(inf.get(c))
?? ?{
?? ??? ?cout.put(c);
?? ?}
}
inline void Role::daoju()//道具
{
?? ?int x=4,y=2;
?? ?system("cls");
?? ?gotoxy(0,5);
?? ?cout<<"------------------------------"<<endl;
?? ?cout<<"物品欄"<<endl;
?? ?cout<<" ? ?<>名字"<<'\t'<<"數量"<<endl;
?? ?for(int i=7;i<10;i++)
?? ?{
?? ??? ?cout<<" ? ? ?";
?? ??? ?eq[i].getname(i);
?? ??? ?cout<<" ? ? ? "<<wuqicount[i]<<endl;
?? ?}
?? ?cout<<" ? ?<>退出";
?? ?char k=' ';
?? ?gotoxy(x,y);
?? ?printf("→");
?? ?do
?? ?{
?? ??? ?k=_getch();
?? ??? ?if(k=='s'&&x<6)
?? ??? ?{
?? ??? ??? ?gotoxy(x,y);
?? ??? ??? ?printf(" ?");
?? ??? ??? ?x++;
?? ??? ??? ?gotoxy(x,y);
?? ??? ??? ?printf("→");
?? ??? ?}
?? ??? ?if(k=='w'&&x>3)
?? ??? ?{
?? ??? ??? ?gotoxy(x,y);
?? ??? ??? ?printf(" ?");
?? ??? ??? ?x--;
?? ??? ??? ?gotoxy(x,y);
?? ??? ??? ?printf("→");
?? ??? ?}
?? ?}while(k!=13);
?? ?if(x==3&&wuqicount[7]>0)
?? ?{
?? ??? ?wuqicount[7]--;
?? ??? ?if(life+10>Life)
?? ??? ?{
?? ??? ??? ?life=Life;
?? ??? ?}
?? ??? ?else
?? ??? ?{
?? ??? ??? ?life+=10;
?? ??? ?}
?? ?}
?? ?if(x==4&&wuqicount[8]>0)
?? ?{
?? ??? ?wuqicount[8]--;
?? ??? ?if(life+20>Life)
?? ??? ?{
?? ??? ??? ?life=Life;
?? ??? ?}
?? ??? ?else
?? ??? ?{
?? ??? ??? ?life+=20;
?? ??? ?}
?? ?}
?? ?if(x==5&&wuqicount[9]>0)
?? ?{
?? ??? ?wuqicount[9]--;
?? ??? ?if(life+30>Life)
?? ??? ?{
?? ??? ??? ?life=Life;
?? ??? ?}
?? ??? ?else
?? ??? ?{
?? ??? ??? ?life+=30;
?? ??? ?}
?? ?}
?? ?gotoxy(0,0);
?? ?CombatC();
?? ?gotoxy(18,2);printf("姓名:%s ? ?Lv:%d ? ? ?職業:%s",name,Lv,work);
?? ?gotoxy(19,2);printf("HP:%d/%d ? ? ?攻擊力:%d ?防御力:%d ? ",life,Life,attck,denfen);
?? ?gotoxy(18,40);gw->show(gwnamenum);
?? ?gotoxy(19,40);printf("HP:%d/%d ? ? ?攻擊力:%d ?防御力:%d ? ",k,kk,gwAT,gwFY);
?? ?if(gwAT>denfen)
?? ?{
?? ??? ?life=life-gwAT+denfen;
?? ??? ?gotoxy(x,y);
?? ??? ?printf("怪獸對你傷害%d\n",gwAT-denfen);
?? ??? ?x+=2;
?? ?}
?? ?else
?? ?{
?? ??? ?gotoxy(x,y);
?? ??? ?printf("怪獸對你傷害0\n");
?? ??? ?x+=2;
?? ?}
?? ?gotoxy(18,2);printf("姓名:%s ? ?Lv:%d ? ? ?職業:%s",name,Lv,work);
?? ?gotoxy(19,2);printf("HP:%d/%d ? ? ?攻擊力:%d ?防御力:%d ? ",life,Life,attck,denfen);
?? ?gotoxy(18,40);gw->show(gwnamenum);
?? ?gotoxy(19,40);printf("HP:%d/%d ? ? ?攻擊力:%d ?防御力:%d ? ",k,kk,gwAT,gwFY);
}
inline void Role::ul()//選擇列表
{
?? ?gwnamenum = rand()%10 ;
?? ?gw = new Gwu(gwnamenum);
?? ?k = gw->getlife();
?? ?kk = gw->getllife();
?? ?gwAT=gw->getattck();
?? ?gwFY=gw->getdenfen();
?? ?int x=0,y=0;
?? ?gotoxy(18,2);printf("姓名:%s ? ?Lv:%d ? ? ?職業:%s",name,Lv,work[workrole]);
?? ?gotoxy(19,2);printf("HP:%d/%d ? ? ?攻擊力:%d ?防御力:%d",life,Life,attck,denfen);
?? ?gotoxy(18, 40); gw->show(gwnamenum);
?? ?gotoxy(19, 40); printf("HP:%d/%d ? ? ?攻擊力:%d ?防御力:%d ?", k, kk, gwAT, gwFY);
}
inline int Role::chiose()//選擇界面
{
?? ?int x=1,y=2,f=1,t;
?? ?char k=' ';
?? ?gotoxy(x,y);
?? ?printf("→");
?
?? ?while(k!=13)//回車為13
?? ?{
?? ??? ?k=_getch();
?? ??? ?f=0;t=0;
?? ??? ?if(k=='w'||k=='W')
?? ??? ?{
?? ??? ??? ?if(x>1)
?? ??? ??? ?{
?? ??? ??? ? ?x+=-2;
?? ??? ??? ? ?t=-2;
?? ??? ??? ? ?f=1;
?? ??? ??? ?}
?? ??? ?}
?? ??? ?else if(k=='s'||k=='S')
?? ??? ?{
?? ??? ??? ?if(x<=7)
?? ??? ??? ?{
?? ??? ??? ??? ?f=1;
?? ??? ??? ? ?x+=2;
?? ??? ??? ? ?t=2;
?? ??? ??? ?}
?? ??? ?}
?? ??? ?if(f)
?? ??? ?{
?? ??? ? ?gotoxy(x-t,y);
?? ??? ? ?printf(" ");
?? ??? ?}
?? ??? ?if(f)
?? ??? ?{
?? ??? ? gotoxy(x,y);
?? ??? ? printf("→");
?? ??? ? f=1;
?? ??? ?}
?? ?}
?? ?return x;
}
inline void Role::oneattck()//一次戰斗
{
?? ?gotoxy(18,40);gw->show(gwnamenum);
?? ?gotoxy(19,40);printf("HP:%d/%d ? ? ?攻擊力:%d ?防御力:%d ?",k,kk,gwAT,gwFY);
?? ??? ?if(life<=0)
?? ??? ?{
?? ??? ??? ?gotoxy(x,y);
?? ??? ??? ?printf("You low!");
?? ??? ??? ?system("cls");
?? ??? ?}
?? ??? ?if(x==16)
?? ??? ?{
?? ??? ??? ?for(int i=0;i<=16;++i)
?? ??? ??? ?{
?? ??? ??? ??? ?gotoxy(i,13);
?? ??? ??? ??? ?printf(" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ");
?? ??? ??? ?}
?? ??? ??? ?x=0,y=13;
?? ??? ?}
?? ??? ?if(k>0)
?? ??? ?{
?? ??? ??? ?if(attck>gwFY)
?? ??? ??? ?{
?? ??? ??? ??? ?k=k-attck+gwFY;
?? ??? ??? ??? ?gotoxy(x,y);
?? ??? ??? ??? ?printf("你對怪獸傷害%d\n",attck-gwFY);
?? ??? ??? ? ? ?x+=2;
?? ??? ??? ?}
?? ??? ??? ?else
?? ??? ??? ?{
?? ??? ??? ??? ??? ?gotoxy(x,y);
?? ??? ??? ??? ? ?printf("你對怪獸傷害0\n");
?? ??? ??? ? ? ? ?x+=2;
?? ??? ??? ?}
?? ??? ??? ?if(gwAT>denfen)
?? ??? ??? ?{
?? ??? ??? ??? ?life=life-gwAT+denfen;
?? ??? ??? ??? ?gotoxy(x,y);
?? ??? ??? ??? ?printf("怪獸對你傷害%d\n",gwAT-denfen);
?? ??? ??? ??? ? ?x+=2;
?? ??? ??? ?}
?? ??? ??? ?else
?? ??? ??? ?{
?? ??? ??? ??? ?gotoxy(x,y);
?? ??? ??? ??? ? printf("怪獸對你傷害0\n");
?? ??? ??? ? ? ? ?x+=2;
?? ??? ??? ?}
?? ??? ?}
?? ??? ?else
?? ??? ?{
?? ??? ??? ??? ?for (int i = 0; i < 16; ++i)
?? ??? ??? ?{
?? ??? ??? ??? ?printf(" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?");
?? ??? ??? ?}
?? ??? ??? ??? ?x=0,y=13;
?? ??? ??? ?system("cls");
?? ??? ?}
?? ??? ?gotoxy(18,2);printf("姓名:%s ? ?Lv:%d ? ? ?職業:%s",name,Lv,work[workrole]);
?? ? ? ?gotoxy(19,2);printf("HP:%d/%d ? ? ?攻擊力:%d ?防御力:%d ?",life,Life,attck,denfen);
?? ??? ?gotoxy(18,40);gw->show(gwnamenum);
?? ??? ?gotoxy(19,40);printf("HP:%d/%d ? ? ?攻擊力:%d ?防御力:%d ?",k,kk,gwAT,gwFY);
?? ??? ?::Sleep(500);
}
inline void Role::Comjiemian()//自動戰斗界面
{
?? ? gotoxy(18,40);gw->show(gwnamenum);
?? ?gotoxy(19,40);printf("HP:%d/%d ? ? ?攻擊力:%d ?防御力:%d ?",k,kk,gwAT,gwFY);
?? ?while(1)
?? ?{
?? ??? ?if(life<=0)
?? ??? ?{
?? ??? ??? ?gotoxy(x,y);
?? ??? ??? ?printf("You low!");
?? ??? ??? ?::Sleep(2000);
?? ??? ??? ?system("cls");
?? ??? ??? ?break;
?? ??? ?}
?? ??? ?if(x==16)
?? ??? ?{
?? ??? ??? ?for(int i=0;i<=16;++i)
?? ??? ??? ?{
?? ??? ??? ??? ?gotoxy(i,13);
?? ??? ??? ??? ?printf(" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ");
?? ??? ??? ?}
?? ??? ??? ?x=0,y=13;
?? ??? ?}
?? ??? ?
?? ??? ?if(k>0)
?? ??? ?{
?? ??? ??? ?if(attck>gwFY)
?? ??? ??? ?{
?? ??? ??? ??? ?k=k-attck+gwFY;
?? ??? ??? ??? ?gotoxy(x,y);
?? ??? ??? ??? ?printf("你對怪獸傷害%d\n",attck-gwFY);
?? ??? ??? ? ? ?x+=2;
?? ??? ??? ?}
?? ??? ??? ?else
?? ??? ??? ?{
?? ??? ??? ??? ??? ?gotoxy(x,y);
?? ??? ??? ??? ? ?printf("你對怪獸傷害0\n");
?? ??? ??? ? ? ? ?x+=2;
?? ??? ??? ?}
?? ??? ??? ?if(gwAT>denfen)
?? ??? ??? ?{
?? ??? ??? ??? ?life=life-gwAT+denfen;
?? ??? ??? ??? ?gotoxy(x,y);
?? ??? ??? ??? ?printf("怪獸對你傷害%d\n",gwAT-denfen);
?? ??? ??? ??? ? ?x+=2;
?? ??? ??? ?}
?? ??? ??? ?else
?? ??? ??? ?{
?? ??? ??? ??? ?gotoxy(x,y);
?? ??? ??? ??? ? printf("怪獸對你傷害0\n");
?? ??? ??? ? ? ? ?x+=2;
?? ??? ??? ?}
?? ??? ??? ?::Sleep(1000);
?? ??? ?}
?? ??? ?else
?? ??? ?{
?? ??? ??? ?gotoxy(0,0);
?? ??? ??? ?for (int i = 1; i < 16;++i)
?? ??? ??? ?{
?? ??? ??? ??? ?printf(" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?");
?? ??? ??? ?}
?? ??? ??? ?system("cls");
?? ??? ??? ?break;
?? ??? ?}
?? ??? ?gotoxy(18,2);printf("姓名:%s ? ?Lv:%d ? ? ?職業:%s",name,Lv,work);
?? ? ? ?gotoxy(19,2);printf("HP:%d/%d ? ? ?攻擊力:%d ?防御力:%d ? ",life,Life,attck,denfen);
?? ??? ?gotoxy(18,40);gw->show(gwnamenum);
?? ??? ?gotoxy(19,40);printf("HP:%d/%d ? ? ?攻擊力:%d ?防御力:%d ? ",k,kk,gwAT,gwFY);
?? ??? ?
?? ?}
}
inline int Role::Combat(int t)//進入戰斗函數
{
?? ?switch(t)
?? ?{
?? ? ? ?case 1:oneattck();break;
?? ??? ?case 3:break;
?? ??? ?case 5:daoju(); break;
?? ??? ?case 7:Comjiemian();break;
?? ??? ?case 9:break;
?? ?}
?? ?if(k<=0){
?? ??? ?system("cls");
?? ??? ?gotoxy(0, 13);
?? ??? ?printf("Win!");
?? ??? ?Ex+=getEX;Money+=getmoney;
?? ??? ?printf("獲得%d經驗,獲得%d金錢.",getEX,getmoney);
?? ??? ?::Sleep(2500);
?? ??? ?if(Ex>=Lvup)
?? ? ? ?{
?? ??? ??? ?system("cls");
?? ??? ??? ?up(Lv);
?? ??? ? ? ::Sleep(2000);
?? ??? ? ? system("cls");
?? ? ? ?}
?? ??? ?return 1;}
?? ?
?? ?if(life<=0)
?? ?{
?? ??? ?system("cls");
?? ??? ?gotoxy(0, 13);
?? ??? ?printf("You lose!");
?? ??? ?return 0;
?? ?}
?? ?return 0;
}
inline int Role::COMBAT()//戰斗函數
{
?? ? int t;
?? ? ul();
?? ?while(t=chiose())
?? ?{
?? ??? ? if(Combat(t))
?? ??? ? {
?? ??? ??? ? deleteGwu();
?? ??? ??? ? break;
?? ??? ? }
?? ??? ? if(t==7||getlife()<=0){deleteGwu(); break;}
?? ? ? if(t==9)
?? ? ? {
?? ??? ? ? ? for(int i=0;i<=16;++i)
?? ??? ??? ?{
?? ??? ??? ??? ?gotoxy(i,13);
?? ??? ??? ??? ?printf(" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ");
?? ??? ??? ? }
?? ??? ? ? if(rand()%50>20)
?? ??? ? ? {
?? ??? ??? ? ? deleteGwu();
?? ??? ??? ??? ?gotoxy(0,13);
?? ??? ??? ? ? printf("逃跑成功!");
?? ??? ??? ? ? x=0;
?? ??? ??? ? ? ::Sleep(1000);
?? ??? ??? ? ? system("cls");
?? ??? ??? ? ? gotoxy(9,2);printf(" ");
?? ??? ??? ? ? return 0;
?? ??? ? ? }
?? ??? ? ? else
?? ??? ? ? {
?? ??? ??? ? ? gotoxy(9,2);printf(" ");
?? ??? ??? ? ? gotoxy(0,13);
?? ??? ??? ? ? printf("逃跑失敗!");?
?? ??? ??? ? ? if (gwAT>denfen)
?? ??? ??? ? ? {
?? ??? ??? ??? ? ? life = life - gwAT + denfen;
?? ??? ??? ??? ? ? gotoxy(x, y);
?? ??? ??? ??? ? ? printf("怪獸對你傷害%d\n", gwAT - denfen);
?? ??? ??? ??? ? ? x += 2;
?? ??? ??? ? ? }
?? ??? ??? ? ? else
?? ??? ??? ? ? {
?? ??? ??? ??? ? ? gotoxy(x, y);
?? ??? ??? ??? ? ? printf("怪獸對你傷害0\n");
?? ??? ??? ??? ? ? x += 2;
?? ??? ??? ? ? }
?? ??? ??? ? ? ::Sleep(1000);
?? ??? ? ? }
?? ? ? }
?? ?}
?? ?return 0;
}
Role::Role()//構造
{
?? ?gw = NULL;
?? ?for (int i=0;i<10;++i)
?? ?{
?? ??? ?wuqicount[i]=0;
?? ?}
?? ?wuqiA=-1;wuqiB=-1;
?? ?x=0,y=13;
?? ?Life = life;
?? ?strcpy(work[0],"戰士");
?? ?strcpy(work[1],"刺客");
?? ?strcpy(work[2],"盾衛");
?? ?Lvup=10*Lv;
?? ?Money=10000;
?? ?Ex=0;
?? ?numA=-1;
?? ?numB=-1;
?? ?num=-1;
?? ?wuqiA=-1;
?? ?wuqiB=-1;
};
inline void Role::up(int t)//升級系統
{
?? ??? ?Lv++;
?? ??? ?Lvup=10*Lv;
?? ??? ?attck+=t;
?? ??? ?denfen+=t;
?? ??? ?life+=t*10;
?? ??? ?Life = life;
?? ??? ?for (int i = 0; i <= 16; ++i)
?? ??? ?{
?? ??? ??? ?gotoxy(i, 13);
?? ??? ??? ?printf(" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ");
?? ??? ?}
?? ??? ?gotoxy(0,13);
?? ??? ?printf("升級!\n");
?? ??? ?printf("Lv->%d ? attck->%d ?denfen->%d ?life->%d\n", Lv, attck, denfen, life);
}
?
inline int Role::GetEX()//角色經驗
{
?? ?return Ex;
}
inline int Role::GetMoney()//角色金錢
{
?? ?return Money;
}
inline void Role::showRole()
{?
?? ?if(numA!=-1)
?? ?{
?? ??? ?attck=attck+eq[numA].getaddA(numA);
?? ?}
?? ?if(numB!=-1)
?? ?{
?? ??? ?denfen=denfen+eq[numB].getaddB(numB);
?? ?}
?? ?if(wuqiA!=-1)
?? ?{
?? ??? ?attck=attck-eq[wuqiA].getaddA(wuqiA);
?? ?}
?? ?if(wuqiB!=-1)
?? ?{
?? ??? ?denfen=denfen-eq[wuqiB].getaddB(wuqiB);
?? ?}
?? ?cout<<"------------------------------"<<endl;
?? ?cout<<" ? ?<>角色名:"<<name<<" <>等級: " << Lv << endl;
?? ?cout<<" ? ?<>職業:"<<work[workrole]<<endl;
?? ?cout<<" ? ?<>生命:"<<life<<endl;
?? ?cout<<" ? ?<>攻擊力:"<<attck<<endl;
?? ?cout<<" ? ?<>防守力:"<<denfen<<endl;
?? ?cout<<" ? ?<>經驗:"<<Ex<<" / "<<Lvup<<endl;
?? ?cout<<" ? ?<>武器:";
?? ?if(numA!=-1)
?? ?{
?? ??? ?eq[numA].getname(numA);
?? ??? ?wuqiA=numA;
?? ?}
?? ?cout<<endl;
?? ?cout<<" ? ?<>防具:";
?? ?if(numB!=-1)
?? ?{
?? ??? ?eq[numB].getname(numB);
?? ??? ?wuqiB=numB;
?? ?}
?? ?cout<<endl;
?? ?cout<<"------------------------------"<<endl;
?? ?cout<<"物品欄"<<endl;
?? ?cout<<" ? ?<>名字"<<'\t'<<"數量"<<endl;
?? ?for(int i=0;i<10;i++)
?? ?{
?? ??? ?cout<<" ? ? ?";
?? ??? ?eq[i].getname(i);
?? ??? ?cout<<" ? ? ? "<<wuqicount[i]<<endl;
?? ?}
?? ?int x=22,y=2;
?? ?int x1,y1;
?? ?cout<<" ? ?<>退出";
?? ?x=12,y=2;
?? ?gotoxy(x,y);
?? ?cout<<"→";
?? ?char k=' ';
?? ?char h;
?? ?while(k!='\n')
?? ?{
?? ??? ?k=_getch();
?? ??? ?if(k=='s'||k=='S')
?? ??? ?{
?? ??? ??? ?if(x<22)
?? ??? ??? ?{
?? ??? ??? ??? ?gotoxy(x,y);
?? ??? ??? ??? ?cout<<' ';
?? ??? ??? ??? ?x++;
?? ??? ??? ??? ?gotoxy(x,y);
?? ??? ??? ??? ?cout<<"→";
?? ??? ??? ?}
?? ??? ?}
?? ??? ?if(k=='w'||k=='W')
?? ??? ?{
?? ??? ??? ?if(x>12)
?? ??? ??? ?{
?? ??? ??? ??? ?gotoxy(x,y);
?? ??? ??? ??? ?cout<<' ';
?? ??? ??? ??? ?x--;
?? ??? ??? ??? ?gotoxy(x,y);
?? ??? ??? ??? ?cout<<"→";
?? ??? ??? ?}
?? ??? ?}
?? ??? ?if(k==13)
?? ??? ?{
?? ??? ??? ?if(x<22)
?? ??? ??? ?{
?? ??? ??? ??? ?h=' ';
?? ??? ??? ??? ?x1=23;
?? ??? ??? ??? ?y1=5;
?? ??? ??? ??? ?gotoxy(x1,y1);
?? ??? ??? ??? ?cout<<"裝備/使用";
?? ??? ??? ??? ?y1=20;
?? ??? ??? ??? ?gotoxy(x1,y1);
?? ??? ??? ??? ?cout<<"放棄";
?? ??? ??? ??? ?y1=2;
?? ??? ??? ??? ?gotoxy(x1,y1);
?? ??? ??? ??? ?cout<<"→";
?? ??? ??? ??? ?while(h!=13)
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?h=_getch();
?? ??? ??? ??? ??? ?if(h=='a'||h=='A'||h=='d'||h=='D')
?? ??? ??? ??? ??? ?{
?? ??? ??? ??? ??? ??? ?if(y1==2)
?? ??? ??? ??? ??? ??? ?{
?? ??? ??? ??? ??? ??? ??? ?gotoxy(x1,2);
?? ??? ??? ??? ??? ??? ??? ?cout<<' ';
?? ??? ??? ??? ??? ??? ??? ?y1=17;
?? ??? ??? ??? ??? ??? ?}
?? ??? ??? ??? ??? ??? ?else if(y1==17)
?? ??? ??? ??? ??? ??? ?{
?? ??? ??? ??? ??? ??? ??? ?gotoxy(x1,17);
?? ??? ??? ??? ??? ??? ??? ?cout<<' ';
?? ??? ??? ??? ??? ??? ??? ?y1=2;
?? ??? ??? ??? ??? ??? ?}
?? ??? ??? ??? ??? ?}
?? ??? ??? ??? ??? ?gotoxy(x1,y1);
?? ??? ??? ??? ??? ?cout<<"→";
?? ??? ??? ??? ?}
?? ??? ??? ??? ?if(y1==2)//選擇裝備num=x-12
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?gotoxy(x1,2);
?? ??? ??? ??? ??? ?cout<<" ? ? ? ? 已裝備 ? ? ? ? ? ?";
?? ??? ??? ??? ??? ?if(x-12<=3)//選擇裝備武器
?? ??? ??? ??? ??? ?{
?? ??? ??? ??? ??? ??? ?if(wuqicount[x-12]>0)
?? ??? ??? ??? ??? ??? ?{
?? ??? ??? ??? ??? ??? ??? ?attck=attck-eq[wuqiA].getaddA(wuqiA);
?? ??? ??? ??? ??? ??? ??? ?wuqiA=x-12;
?? ??? ??? ??? ??? ??? ??? ?attck=attck+eq[wuqiA].getaddA(wuqiA);
?? ??? ??? ??? ??? ??? ??? ?gotoxy(7,11);
?? ??? ??? ??? ??? ??? ??? ?eq[wuqiA].getname(wuqiA);
?? ??? ??? ??? ??? ??? ??? ?gotoxy(4,13);
?? ??? ??? ??? ??? ??? ??? ?cout<<attck;
?? ??? ??? ??? ??? ??? ??? ?gotoxy(x1,2);
?? ??? ??? ??? ??? ??? ??? ?cout<<" ? ? ? ? 已裝備 ? ? ? ? ? ?";
?? ??? ??? ??? ??? ??? ?}
?? ??? ??? ??? ??? ??? ?else
?? ??? ??? ??? ??? ??? ?{
?? ??? ??? ??? ??? ??? ??? ?gotoxy(x1,2);
?? ??? ??? ??? ??? ??? ??? ?cout<<" ? ? 數量不足,無法裝備 ? ? ? ? ? ?";
?? ??? ??? ??? ??? ??? ?}
?
?? ??? ??? ??? ??? ?}
?? ??? ??? ??? ??? ?if(x-12<=6&&x-12>3)//選擇裝備防具
?? ??? ??? ??? ??? ?{
?? ??? ??? ??? ??? ??? ?if(wuqicount[x-12]>0)
?? ??? ??? ??? ??? ??? ?{
?? ??? ??? ??? ??? ??? ??? ?denfen=denfen-eq[wuqiB].getaddB(wuqiB);
?? ??? ??? ??? ??? ??? ??? ?wuqiB=x-12;
?? ??? ??? ??? ??? ??? ??? ?denfen=denfen+eq[wuqiB].getaddB(wuqiB);
?? ??? ??? ??? ??? ??? ??? ?gotoxy(8,11);
?? ??? ??? ??? ??? ??? ??? ?eq[wuqiB].getname(wuqiB);
?? ??? ??? ??? ??? ??? ??? ?gotoxy(5,13);
?? ??? ??? ??? ??? ??? ??? ?cout<<denfen;
?? ??? ??? ??? ??? ??? ??? ?gotoxy(x1,2);
?? ??? ??? ??? ??? ??? ??? ?cout<<" ? ? ? ? 已裝備 ? ? ? ? ? ?";
?? ??? ??? ??? ??? ??? ?}
?? ??? ??? ??? ??? ??? ?else
?? ??? ??? ??? ??? ??? ?{
?? ??? ??? ??? ??? ??? ??? ?gotoxy(x1,2);
?? ??? ??? ??? ??? ??? ??? ?cout<<" ? ? 數量不足,無法裝備 ? ? ? ? ? ?";
?? ??? ??? ??? ??? ??? ?}
?? ??? ??? ??? ??? ?}
?? ??? ??? ??? ??? ?if(x-12>6&&x-12<=9)//選擇使用藥品
?? ??? ??? ??? ??? ?{
?? ??? ??? ??? ??? ??? ?if(wuqicount[x-12]>0)
?? ??? ??? ??? ??? ??? ?{
?? ??? ??? ??? ??? ??? ??? ?life=life+eq[x-12].getaddL(x-12);
?? ??? ??? ??? ??? ??? ??? ?gotoxy(3,11);
?? ??? ??? ??? ??? ??? ??? ?cout<<life;
?? ??? ??? ??? ??? ??? ??? ?gotoxy(x1,2);
?? ??? ??? ??? ??? ??? ??? ?cout<<" ? ? ? ? 已使用 ? ? ? ? ? ?";
?? ??? ??? ??? ??? ??? ??? ?eq[x-12].countsale(x-12);
?? ??? ??? ??? ??? ??? ??? ?wuqicount[x-12]--;
?? ??? ??? ??? ??? ??? ??? ?gotoxy(x,18);
?? ??? ??? ??? ??? ??? ??? ?cout<<wuqicount[x-12];
?? ??? ??? ??? ??? ??? ?}
?? ??? ??? ??? ??? ??? ?else
?? ??? ??? ??? ??? ??? ?{
?? ??? ??? ??? ??? ??? ??? ?gotoxy(x1,2);
?? ??? ??? ??? ??? ??? ??? ?cout<<" ? ? 數量不足,無法使用 ? ? ? ? ? ?";
?? ??? ??? ??? ??? ??? ?}
?? ??? ??? ??? ??? ?}
?? ??? ??? ??? ??? ?Sleep(800);
?? ??? ??? ??? ??? ?gotoxy(x1,2);
?? ??? ??? ??? ??? ?cout<<" ? ? ? ? ? ? ? ? ? ? ?";
?? ??? ??? ??? ??? ?gotoxy(x,y);
?? ??? ??? ??? ??? ?cout<<"→";
?? ??? ??? ??? ?}
?? ??? ??? ??? ?if(y1==17)//選擇放棄
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?gotoxy(x1,2);
?? ??? ??? ??? ??? ?cout<<" ? ? ? ? ? ? ? ? ? ? ? ?";
?? ??? ??? ??? ??? ?gotoxy(x,y);
?? ??? ??? ??? ??? ?cout<<"→";
?? ??? ??? ??? ?}
?? ??? ??? ?}
?? ??? ??? ?if(x==22)
?? ??? ??? ?{
?? ??? ??? ??? ?system("cls");
?? ??? ??? ??? ?break;
?? ??? ??? ?}
?? ??? ?}
?? ?}
}?
?
inline void Role::addmoney(int a)
{
?? ?Money=Money+a;
}
inline void Role::usemoney(int a)
{
?? ?Money=Money-a;
}
inline int Role::getusemoney(int a)
{
?? ?int k;
?? ?k=Money-a;
?? ?return k;
}
inline int Role::getmoney1()
{
?? ?return Money;
}
inline void Role::getnum()
{
?? ?if(num<=3)
?? ?{
?? ??? ?numA=num;
?? ?}
?? ?else if(num<=6)
?? ?{
?? ??? ?numB=num;
?? ?}
}
inline void Role::setnum(int a)
{
?? ?num=a;
}
inline void Role::Wuqicount(int a,int b)
{
?? ?wuqicount[a]+=b;
}
inline int Role::_wuqicount(int a)
{
?? ?return wuqicount[a];
}
人物繼承的基類:
class Monster
{
protected:
?? ?int Lv;//等級
?? ?int attck;//攻擊
?? ?int denfen;//防守
?? ?int life;//生命
?? ?int llife;//最大生命
?? ?int getEX;//殺怪所得經驗
?? ?int getmoney;//殺怪所得金錢
public:
?? ?Monster();//構造
?? ?int getattck();
?? ?int getdenfen();
?? ?int getlife();
?? ?int getllife();
?? ?int getLv();
?? ?void setlife(int t);
};
Monster::Monster()//構造
{
?? ?getEX = 5;
?? ?getmoney = 10;
?? ?Lv=1;
?? ?attck=5;
?? ?denfen=5;
?? ?life=10;
?? ?llife = life;
};
inline int Monster::getllife()
{
?? ?return llife;
}
inline void Monster::setlife(int t)
{
? ? life-=t;
}
inline int Monster::getattck()
{
?? ?return attck;
}
inline int Monster::getdenfen()
{
?? ?return denfen;
}
inline int Monster::getlife()
{
?? ?return life;
}
inline int Monster::getLv()
{
?? ? return Lv;
}
武器類:
struct Equipment
{
?? ?int addA;//武器攻擊屬性增加
?? ?int addB;//防守屬性++
?? ?int addL;//生命++
?? ?int count;//用有數量
?? ?char name[10];//武器名
?? ?int num;//武器代號
?? ?int money;//武器買進價格
?? ?int sale;//武器賣出價格
?? ?Equipment();
};
Equipment::Equipment()
{
?? ?addA=0;
?? ?addB=0;
?? ?addL=0;
?? ?count=0;
}
class Equip
{
protected:
?? ?Equipment eq[10];
public:
?? ? Equip();
?? ? void show(int a);
?? ? int getmoney1(int i);
?? ? void getname(int i);
?? ? int getnum(int i);
?? ? void countbuy(int i);//買一,count++
?? ? void countsale(int i);//賣一,count--
?? ? void showcount(int i);
?? ? int getcount(int i);
?? ? int getaddA(int i);
?? ? int getaddB(int i);
?? ? int getaddL(int i);
};
Equip::Equip()
{
?? ?char eq0[10]={"小刀 "};
?? ?char eq1[10]={"手槍 "};
?? ?char eq2[10]={"步槍 "};
?? ?char eq3[10]={"狙擊 "};
?? ?char eq4[10]={"步衣 "};
?? ?char eq5[10]={"鐵衣 "};
?? ?char eq6[10]={"裝甲 "};
?? ?char eq7[10]={"活石 "};
?? ?char eq8[10]={"活石+"};
?? ?char eq9[10]={"生石 "};
?? ?strcpy(eq[0].name,eq0);
?? ?strcpy(eq[1].name,eq1);
?? ?strcpy(eq[2].name,eq2);
?? ?strcpy(eq[3].name,eq3);
?? ?strcpy(eq[4].name,eq4);
?? ?strcpy(eq[5].name,eq5);
?? ?strcpy(eq[6].name,eq6);
?? ?strcpy(eq[7].name,eq7);
?? ?strcpy(eq[8].name,eq8);
?? ?strcpy(eq[9].name,eq9);
?? ?eq[0].addA=10;
?? ?eq[1].addA=20;
?? ?eq[2].addA=30;
?? ?eq[3].addA=40;
?? ?eq[4].addB=10;
?? ?eq[5].addB=20;
?? ?eq[6].addB=30;
?? ?eq[7].addL=10;
?? ?eq[8].addL=20;
?? ?eq[9].addL=30;
?? ?eq[0].money=100;
?? ?eq[1].money=150;
?? ?eq[2].money=250;
?? ?eq[3].money=400;
?? ?eq[4].money=100;
?? ?eq[5].money=200;
?? ?eq[6].money=400;
?? ?eq[7].money=100;
?? ?eq[8].money=200;
?? ?eq[9].money=300;
?? ?for(int i=0;i<10;i++)
?? ?{
?? ??? ?eq[i].num=i;
?? ?}
}
inline void Equip::show(int a)
{
?? ?cout<<eq[a].name<<" ?"<<eq[a].addA<<" ? ?"<<eq[a].addB<<" ? ?"<<eq[a].addL<<" ? "<<eq[a].money<<" ? ?"<<eq[a].count;
}
inline int Equip::getmoney1(int i)
{
?? ?return eq[i].money;
}
inline int ?Equip::getnum(int i)
{
?? ?return eq[i].num;
}
inline void Equip::getname(int i)
{
?? ?cout<<eq[i].name;
}
inline void Equip::countbuy(int i)
{
?? ?eq[i].count++;
}
inline void Equip::countsale(int i)
{
?? ?eq[i].count--;
}
inline void Equip::showcount(int i)
{
?? ?cout<<eq[i].count;
}
inline int Equip::getcount(int i)
{
?? ?return eq[i].count;
}
inline int Equip::getaddA(int i)
{
?? ?return eq[i].addA;
}
inline int Equip::getaddB(int i)
{
?? ?return eq[i].addB;
}
inline int Equip::getaddL(int i)
{
?? ?return eq[i].addL;
}
怪物類:
class Gwu:public Monster
{
private:
?? ?char num[10][15];
public:
?? ?int Getnumlife();
?? ?int Getnumattck();
?? ?int Getnumdenfen();
?? ?void show(int as);
Gwu(int a)
?? ?{
?? ? strcpy(num[0],"步兵");
?? ? strcpy(num[1],"劍兵");
?? ? strcpy(num[2],"弓兵");
?? ? strcpy(num[3],"槍兵");
?? ? strcpy(num[4],"輕騎兵");
?? ? strcpy(num[5],"重步兵");
?? ? strcpy(num[6],"長弓兵");
?? ? strcpy(num[7],"重騎兵");
?? ? strcpy(num[8],"分隊長");
?? ? strcpy(num[9],"嗜血鐵衛");
?? ? life = 10+a;
?? ? attck = 2+a%5;
?? ? denfen = 2+a%5;
?? ? llife = life;
?? ?}
};
void Gwu::show(int as)
{
?? ?printf("%s",num[as]);
}
inline int Gwu::Getnumlife()
{
?? ?return life;
}
inline int Gwu::Getnumattck()
{
?? ?return attck;
}
inline int Gwu::Getnumdenfen()
{
?? ?return denfen;
}
地圖類:
class Map
{
private:
?? ?char str[50][5];
?? ?int x,y,xx,yy;//第一步,舊的一步
?? ?int zx,zy;//數組內的坐標
?? ?Role* people;
?? ?char strr;
public:
?? ?Map();
?? ?~Map();
?? ?int map1();
?? ?void yidong(int& a,int& b);
?? ?int map2();
?? ?int map3();
?? ?int map4();
?? ?int map5();
?? ?void ztjm(int (*st)[20]);//人物狀態界面
?? ?void shua(int (*st)[20]);//刷地圖
?? ?void Tableabout(int a,int b);//交談
?? ?void shop();
?? ? Role* getpeople();
?? ? void Jieshao();
};
void Map::Jieshao()
{
?? ?gotoxy(5,40);
?? ?cout<<"按esc鍵查看狀態";
?? ?gotoxy(6,40);
?? ?cout<<"由于時間關系,暫無劇情,請待更新。"<<endl;
}
inline Role* Map::getpeople()
{
?? ?return people;
}
inline Map::~Map()
{
?? ?delete people;
}
void Map::shop()
{
?? ?Equip eq[11];
?? ?printf(" ? ? ? ? ? ? ? ? ? ? ? ? 買什么?\n");
?? ?printf("----------------------------------------------------------\n");
?? ?printf(" ? ? ? ? ? ? ? ? ? ? ? |武器名 ?攻+ ?防+ ?命+ ?價格 ?擁有|\n");
?? ?for(int i=0;i<10;i++)
?? ?{
?? ??? ?printf(" ? ? ? ? ? ? ? ? ? ? ? | ");
?? ??? ?eq[i].show(i);
?? ??? ?printf(" ?|\n");
?? ?}?
?? ?printf(" ? ? ? ? ? ? ? ? ? ? ? < ");
?? ?cout<<"退出";
?? ?printf(" >\n");
?? ?printf("----------------------------------------------------------\n");
?? ?int x=3,y=20;
?? ?int x1,y1;
?? ?x1=15;
?? ?y1=20;
?? ?gotoxy(x1,y1);
?? ?printf("擁有金錢:%d ? ? ",people->getmoney1());
?? ?gotoxy(x,y);
?? ?printf("→");
?? ?char k=' ';
?? ?char h;
?? ?while(k!='\n')
?? ?{
?? ??? ?k=_getch();
?? ??? ?if(k=='s'||k=='S')
?? ??? ?{
?? ??? ??? ?if(x<13)
?? ??? ??? ?{
?? ??? ??? ??? ?gotoxy(x,y);
?? ??? ??? ??? ?printf(" ");
?? ??? ??? ??? ?x++;
?? ??? ??? ??? ?gotoxy(x,y);
?? ??? ??? ??? ?printf("→");
?? ??? ??? ?}
?? ??? ?}
?? ??? ?if(k=='w'||k=='W')
?? ??? ?{
?? ??? ??? ?if(x>3)
?? ??? ??? ?{
?? ??? ??? ??? ?gotoxy(x,y);
?? ??? ??? ??? ?printf(" ");
?? ??? ??? ??? ?x--;
?? ??? ??? ??? ?gotoxy(x,y);
?? ??? ??? ??? ?printf("→");
?? ??? ??? ?}
?? ??? ?}
?? ??? ?if(k==13)
?? ??? ?{
?? ??? ??? ?if(x<13)
?? ??? ??? ?{
?? ??? ??? ??? ?h=' ';
?? ??? ??? ??? ?x1=15;
?? ??? ??? ??? ?y1=20;
?? ??? ??? ??? ?gotoxy(x1,y1);
?? ??? ??? ??? ?printf("擁有金錢:%d ? ?",people->getmoney1());
?? ??? ??? ??? ?x1=16;
?? ??? ??? ??? ?y1=20;
?? ??? ??? ??? ?gotoxy(x1,y1);
?? ??? ??? ??? ?printf("是否購買\n");
?? ??? ??? ??? ?x1=17;
?? ??? ??? ??? ?y1=20;
?? ??? ??? ??? ?gotoxy(x1,y1);
?? ??? ??? ??? ?printf("購買");
?? ??? ??? ??? ?x1=17;
?? ??? ??? ??? ?y1=30;
?? ??? ??? ??? ?gotoxy(x1,y1);
?? ??? ??? ??? ?printf("放棄");
?? ??? ??? ??? ?x1=17;
?? ??? ??? ??? ?y1=41;
?? ??? ??? ??? ?gotoxy(x1,y1);
?? ??? ??? ??? ?printf("賣出");
?? ??? ??? ??? ?x1=17;
?? ??? ??? ??? ?y1=17;
?? ??? ??? ??? ?gotoxy(x1,y1);
?? ??? ??? ??? ?printf("→");
?? ??? ??? ??? ?while(h!=13)
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?h=_getch();
?? ??? ??? ??? ??? ?if(h=='a'||h=='A')
?? ??? ??? ??? ??? ?{
?? ??? ??? ??? ??? ??? ?if(y1>20)
?? ??? ??? ??? ??? ??? ?{
?? ??? ??? ??? ??? ??? ??? ?gotoxy(x1,y1);
?? ??? ??? ??? ??? ??? ??? ?printf(" ");
?? ??? ??? ??? ??? ??? ??? ?y1=y1-11;
?? ??? ??? ??? ??? ??? ?}
?? ??? ??? ??? ??? ?}
?? ??? ??? ??? ??? ?if(h=='d'||h=='D')
?? ??? ??? ??? ??? ?{
?? ??? ??? ??? ??? ??? ?if(y1<=33)
?? ??? ??? ??? ??? ??? ?{
?? ??? ??? ??? ??? ??? ??? ?gotoxy(x1,y1);
?? ??? ??? ??? ??? ??? ??? ?printf(" ");
?? ??? ??? ??? ??? ??? ??? ?y1=y1+11;
?? ??? ??? ??? ??? ??? ?}
?? ??? ??? ??? ??? ?}
?? ??? ??? ??? ??? ?gotoxy(x1,y1);
?? ??? ??? ??? ??? ?printf("→");
?? ??? ??? ??? ?}
?? ??? ??? ??? ?if(y1==17)//選擇yes
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?if(people->getusemoney(eq[x-3].getmoney1(x-3))>=0)
?? ??? ??? ??? ??? ?{
?? ??? ??? ??? ??? ??? ?people->usemoney(eq[x-3].getmoney1(x-3));//減錢
?? ??? ??? ??? ??? ??? ?people->setnum(eq[x-3].getnum(x-3));//將人物num=武器num
?? ??? ??? ??? ??? ??? ?people->getnum();//講人物num賦值給人物武器numA或人物防具numB
?? ??? ??? ??? ??? ??? ?eq[x-3].countbuy(x-3);
?? ??? ??? ??? ??? ??? ?gotoxy(x,54);
?? ??? ??? ??? ??? ??? ?eq[x-3].showcount(x-3);
?? ??? ??? ??? ??? ??? ?people->Wuqicount(x-3,eq[x-3].getcount(x-3));
?? ??? ??? ??? ??? ??? ?gotoxy(16,20);
?? ??? ??? ??? ??? ??? ?printf(" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ");
?? ??? ??? ??? ??? ??? ?gotoxy(17,17);
?? ??? ??? ??? ??? ??? ?printf("購買成功,已自動裝備 ? ? ? ? ? ? ?");
?? ??? ??? ??? ??? ??? ?Sleep(800);
?? ??? ??? ??? ??? ??? ?x1=15;
?? ??? ??? ??? ??? ??? ?y1=20;
?? ??? ??? ??? ??? ??? ?gotoxy(x1,y1);
?? ??? ??? ??? ??? ??? ?printf("擁有金錢:%d ? ?",people->getmoney1());
?? ??? ??? ??? ??? ??? ?gotoxy(17,17);
?? ??? ??? ??? ??? ??? ?printf(" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ");
?? ??? ??? ??? ??? ??? ?gotoxy(x,y);
?? ??? ??? ??? ??? ?}
?? ??? ??? ??? ??? ?else
?? ??? ??? ??? ??? ?{
?? ??? ??? ??? ??? ??? ?gotoxy(16,20);
?? ??? ??? ??? ??? ??? ?printf("金錢不足,無法購買 ? ? ? ? ? ? ? ?");
?? ??? ??? ??? ??? ??? ?gotoxy(17,17);
?? ??? ??? ??? ??? ??? ?printf(" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ");
?? ??? ??? ??? ??? ??? ?Sleep(800);
?? ??? ??? ??? ??? ??? ?gotoxy(16,20);
?? ??? ??? ??? ??? ??? ?printf(" ? ? ? ? ? ? ? ? ? ? ? ");
?? ??? ??? ??? ??? ??? ?gotoxy(x,y);
?? ??? ??? ??? ??? ?}
?? ??? ??? ??? ?}
?? ??? ??? ??? ?if(y1==28)//選擇no
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?gotoxy(16,20);
?? ??? ??? ??? ??? ?printf(" ? ? ? ? ? ? ?");
?? ??? ??? ??? ??? ?gotoxy(17,20);
?? ??? ??? ??? ??? ?printf(" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?");
?? ??? ??? ??? ??? ?gotoxy(x,y);
?? ??? ??? ??? ?}
?? ??? ??? ??? ?if(y1==39)
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?if(people->_wuqicount(x-3)>0)
?? ??? ??? ??? ??? ?{
?? ??? ??? ??? ??? ??? ?people->setnum(eq[x-3].getnum(x-3));//將人物num=武器num
?? ??? ??? ??? ??? ??? ?people->getnum();
?? ??? ??? ??? ??? ??? ?people->Wuqicount(x-3,-1);
?? ??? ??? ??? ??? ??? ?eq[x-3].countsale(x-3);
?? ??? ??? ??? ??? ??? ?gotoxy(x,54);
?? ??? ??? ??? ??? ??? ?eq[x-3].showcount(x-3);
?? ??? ??? ??? ??? ??? ?gotoxy(16,20);
?? ??? ??? ??? ??? ??? ?printf(" ? ? ? 已賣出 ? ? ? ? ? ? ? ");
?? ??? ??? ??? ??? ??? ?gotoxy(17,17);
?? ??? ??? ??? ??? ??? ?printf(" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?");
?? ??? ??? ??? ??? ??? ?Sleep(800);
?? ??? ??? ??? ??? ??? ?gotoxy(16,20);
?? ??? ??? ??? ??? ??? ?printf(" ? ? ? ? ? ? ? ? ? ? ? ? ?");
?? ??? ??? ??? ??? ??? ?gotoxy(x,y);
?? ??? ??? ??? ??? ??? ?people->addmoney(eq[x-3].getmoney1(x-3));
?? ??? ??? ??? ??? ??? ?x1=15;
?? ??? ??? ??? ??? ??? ?y1=20;
?? ??? ??? ??? ??? ??? ?gotoxy(x1,y1);
?? ??? ??? ??? ??? ??? ?printf("擁有金錢:%d ? ?",people->getmoney1());
?? ??? ??? ??? ??? ?}
?? ??? ??? ??? ??? ?else
?? ??? ??? ??? ??? ?{
?? ??? ??? ??? ??? ??? ?gotoxy(16,20);
?? ??? ??? ??? ??? ??? ?printf("數量不足,無法賣出 ? ? ? ? ? ? ? ?");
?? ??? ??? ??? ??? ??? ?gotoxy(17,17);
?? ??? ??? ??? ??? ??? ?printf(" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?");
?? ??? ??? ??? ??? ??? ?Sleep(800);
?? ??? ??? ??? ??? ??? ?gotoxy(16,20);
?? ??? ??? ??? ??? ??? ?printf(" ? ? ? ? ? ? ? ? ? ? ? ? ?");
?? ??? ??? ??? ??? ??? ?gotoxy(x,y);
?? ??? ??? ??? ??? ?}
?? ??? ??? ??? ?}
?? ??? ??? ?}
?? ??? ??? ?if(x==13)
?? ??? ??? ?{
?? ??? ??? ??? ?system("cls");
?? ??? ??? ??? ?break;
?? ??? ??? ?}
?
?? ??? ?}
?? ?}
}
inline void Map::Tableabout(int a,int b)//交談
{
?? ?if(a==1&&b==18)
?? ?{
?? ??? ?printf("村長:\n");
?? ??? ?printf(" ? ? ?勇士你好!");
?? ?}
?? ?else if (a==10&&b==18)
?? ?{
?? ??? ?printf("村民:\n");
?? ??? ?printf(" ? ? ?勇士你好!");
?? ?}
}
inline void Map::shua(int (*st)[20])//刷地圖
{
?? ? ?system("cls");
?? ? ??? ?Jieshao();
?? ? ??? ?gotoxy(0,0);
?? ??? ??? ? ?for(int i=0;i<22;++i)
?? ??? ??? ? ?{
?? ??? ??? ??? ? ?for(int j=0;j<20;++j)
?? ??? ??? ??? ? ?{
?? ??? ??? ??? ??? ? ?printf("%s",str[st[i][j]]);
?? ??? ??? ??? ? ?}
?? ??? ??? ??? ? ?printf("\n");
?? ??? ??? ? ?}
?? ??? ??? ? ?gotoxy(x,y);
?? ??? ??? ? ?printf("%s",str[12]);
}
inline void Map::ztjm(int (*st)[20])//人物狀態界面
{
?? ? ? system("cls");
?? ??? ??? ? ?people->showRole();
?? ??? ??? ? ? system("cls");
?? ??? ??? ? ? ?? ?gotoxy(0,0);
?? ??? ??? ?for(int i=0;i<22;++i)
?? ??? ??? ?{
?? ??? ??? ??? ?for(int j=0;j<20;++j)
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?printf("%s",str[st[i][j]]);
?? ??? ??? ??? ?}
?? ??? ??? ??? ?printf("\n");
?? ??? ??? ?}
?? ??? ??? ?gotoxy(x,y);
?? ??? ??? ?printf("%s",str[12]);
}
Map::Map()
{
?? ?people = new Role;
?? ?zx=3,zy=5;
?? ?x=3,y=10;
?? ?xx=x,yy=y;
?? ?char a[50][5]={{" ?"}/*0*/,{"█"}/*1*/,{"⊙"}/*2*/,{"★"}/*3*/,{"◆"}/*4*/
?? ?,{"▓"}/*5*/,{"●"}/*6*/,{"①"}/*7*/,{"②"}/*8*/,{"③"}/*9*/,{"④"}/*10*/
?? ?,{"¤"}/*11*/,{"∏"}/*12*/,{"主"}/*13*/,{"角"}/*14*/,{"家"}/*15*/,{"房"}/*16*/
?? ?,{"武"}/*17*/,{"器"}/*18*/,{"店"}/*19*/,{"道"}/*20*/,{"具"}/*21*/,{"村"}/*22*/
?? ?,{"長"}/*23*/,{"民"}/*24*/,{"城"}/*25*/,{"東"}/*26*/,{"南"}/*27*/,{"西"}/*28*/
?? ?,{"北"}/*29*/,{"門"}/*30*/,{"山"}/*31*/,{"神"}/*32*/,{"廟"}/*33*/,{"荒"}/*34*/
?? ?,{"郊"}/*35*/,{"野"}/*36*/,{"豬"}/*37*/,{"林"}/*38*/};//39個
?? ?for(int i=0;i<39;++i)//更改上面數組記得修改賦值數
?? ?{
?? ??? ?strcpy(str[i],a[i]);
?? ?}
}
inline void Map::yidong(int& a,int& b)
{
?? ?int xy[4][2]={{1,0},{0,1},{-1,0},{0,-1}};
?? ?int fx;
?? ?do
?? ?{strr = _getch();}
?? ?while(strr!='s'&&strr!='d'&&strr!='w'&&strr!='a'&&strr!=27);
?? ?switch(strr)
?? ?{
?? ? ? case 's':fx=0;break;
?? ? ? case 'd':fx=1;break;
?? ? ? case 'w':fx=2;break;
?? ? ? case 'a':fx=3;break;
?? ?}
?? ?if(strr!=27)
?? ?{
?? ? ?a=xy[fx][0];
? ? ? b=xy[fx][1];
?? ?}
}
inline int Map::map1()
{
?? ?int a,b;
?? ?int st[22][20]={
?? ??? ?1,1,1,1,1,1,1,1,1,1,29,30,1,1,1,1,1,1,1,1,
?? ??? ?1,13,25,0,0,0,0,0,0,0,0,0,0,0,1,22,0,0,3,1,
?? ??? ?1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,23,0,0,0,1,
?? ??? ?1,13,14,15,0,0,1,0,0,0,0,0,0,0,1,15,0,0,0,1,
?? ??? ?1,0,0,0,0,0,1,1,0,0,0,0,0,0,1,0,0,0,0,1,
?? ??? ?1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,
?? ??? ?1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
?? ??? ?1,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,1,
?? ??? ?1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,1,1,1,1,1,
?? ??? ?1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,0,0,24,16,1,
?? ??? ?1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,1,
?? ??? ?1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,
?? ??? ?28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,
?? ??? ?30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,
?? ??? ?1,1,1,1,0,0,1,1,0,0,0,1,1,1,1,1,1,0,0,1,
?? ??? ?1,17,0,0,0,0,0,1,0,0,0,1,20,0,0,0,0,0,0,1,
?? ??? ?1,18,0,0,0,0,0,1,0,0,0,1,21,0,0,0,0,0,0,1,
?? ??? ?1,19,0,0,0,11,0,1,0,0,0,1,19,0,0,11,0,0,0,1,
?? ??? ?1,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,
?? ??? ?1,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,
?? ??? ?1,1,1,1,1,1,1,1,27,30,1,1,1,1,1,1,1,1,1,1
?? ?};//22行20列
?? ?shua(st);
?? ?while(1)
?? ?{
?? ??? ? ?yidong(a,b);
?? ??? ? ?if(strr==27)
?? ??? ? ?{
?? ??? ??? ? ztjm(st);
?? ??? ??? ? ?continue;
?? ??? ? ?}
?? ??? ? ?if(st[zx+a][zy+b]==3)
?? ??? ? ?{
?? ??? ??? ? ? system("cls");
?? ??? ??? ? Tableabout(zx+a,zy+b);
?? ??? ??? ? ?::Sleep(2500);
?? ??? ??? ? ? shua(st);
?? ??? ??? ? ?continue;
?? ??? ? ?}
?? ??? ? ?if (zx+a==17&&(zy+b==5||zy+b==15))
?? ??? ? ?{
?? ??? ??? ? ?system("cls");
?? ??? ??? ? ?shop();
?? ??? ??? ? ? shua(st);
?? ??? ? ?}
?? ??? ? ?if((zy+b==10||zy+b==11)&&(zx+a==0))
?? ??? ? ?{
?? ??? ??? ? ?zx=19;x=zx;
?? ??? ??? ? ?return 2;//北門
?? ??? ? ?}
?? ??? ? ?else if((zy+b==8||zy+b==9)&&(zx+a==20))
?? ??? ? ?{
?? ??? ??? ? ?zx=1;x=zx;
?? ??? ??? ? ?return 3;//南門
?? ??? ? ?}
?? ??? ? ?else if((zx+a==12||zx+a==13)&&(zy+b==19))
?? ??? ? ?{
?? ??? ??? ? ?zy=1;y=2*zy;
?? ??? ??? ? ?return 4;//東門
?? ??? ? ?}
?? ??? ? ?else if((zx+a==12||zx+a==13)&&(zy+b==0))
?? ??? ? ?{
?? ??? ??? ? ?zy=18;y=2*zy;
?? ??? ??? ? ?return 5;//西門
?? ??? ? ?}
?? ??? ? ?if(zx+a>0&&zx+a<21&&zy+b>0&&zy+b<19&&st[zx+a][zy+b]!=1&&st[zx+a][zy+b]<10)
?? ??? ? ?{
?? ??? ??? ? ?zx+=a,zy+=b;
?? ??? ??? ? ?xx=x;yy=y;
?? ??? ??? ? ?x=zx;y=zy*2;
?? ??? ? ? ?gotoxy(xx,yy);
?? ??? ? ? ?printf(" ?");
?? ? ? ? ? ?gotoxy(x,y);
?? ??? ? ? ?printf("%s",str[12]);
?? ??? ? ?}
?? ?}
}
inline int Map::map2()//北門
{
?? ?int a,b;
?? ?int st[22][20]={
?? ??? ?1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
?? ??? ?1,34,20,0,0,0,0,0,0,3,0,0,0,0,0,0,1,0,4,1,
?? ??? ?1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,
?? ??? ?1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,
?? ??? ?1,0,1,1,1,1,1,0,0,0,0,0,0,1,1,0,0,0,0,1,
?? ??? ?1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,1,
?? ??? ?1,0,0,0,0,0,1,1,0,0,0,0,1,0,0,0,0,0,0,1,
?? ??? ?1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,1,1,1,1,
?? ??? ?1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,1,
?? ??? ?1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,1,
?? ??? ?1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,
?? ??? ?1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,
?? ??? ?1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,1,
?? ??? ?1,0,0,1,0,0,0,1,1,0,0,0,1,0,0,0,0,1,0,1,
?? ??? ?1,0,0,1,1,0,0,0,1,0,0,0,1,4,0,0,0,1,0,1,
?? ??? ?1,0,0,0,1,0,0,0,1,1,0,0,1,1,1,0,0,0,0,1,
?? ??? ?1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,
?? ??? ?1,0,0,0,1,1,1,1,1,0,0,0,0,0,1,0,0,0,0,1,
?? ??? ?1,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,1,
?? ??? ?1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,
?? ??? ?1,1,1,1,1,1,1,1,1,1,13,25,1,1,1,1,1,1,1,1
?? ?};//22行20列
?? ?shua(st);
?? ?while(1)
?? ?{
?? ??? ? ?yidong(a,b);
?? ??? ? ? if(strr==27)
?? ??? ? ?{
?? ??? ??? ? ztjm(st);
?? ??? ??? ? ?continue;
?? ??? ? ?}
?? ??? ? ?srand((unsigned)time(NULL));?
?? ??? ? if(rand()%50<15)
?? ??? ? ?{
?? ??? ??? ? ?people->CombatC();
?? ??? ??? ? people->COMBAT();
?? ??? ??? ?shua(st);
?? ??? ? ?}
?? ??? ? ?if((zy+b==10||zy+b==11)&&(zx+a==20))
?? ??? ? ?{
?? ??? ??? ? ?zx=1;x=zx;
?? ??? ??? ? ?return 1;//主城
?? ??? ? ?}
?? ??? ? ?if(zx+a>0&&zx+a<21&&zy+b>0&&zy+b<19&&st[zx+a][zy+b]!=1&&st[zx+a][zy+b]<10)
?? ??? ? ?{
?? ??? ??? ? ?zx+=a,zy+=b;
?? ??? ??? ? ?xx=x;yy=y;
?? ??? ??? ? ?x=zx;y=zy*2;
?? ??? ? ? ?gotoxy(xx,yy);
?? ??? ? ? ?printf(" ?");
?? ? ? ? ? ?gotoxy(x,y);
?? ??? ? ? ?printf("%s",str[12]);
?? ??? ? ?}
?? ?}
}
inline int Map::map3()//南門
{
?? ?int a,b;
?? ?int st[22][20]={
?? ??? ?1,1,1,1,1,1,1,1,13,25,1,1,1,1,1,1,1,1,1,1,
?? ??? ?1,0,0,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,0,1,
?? ??? ?1,0,0,0,0,1,0,0,0,0,0,0,1,0,1,0,0,0,0,1,
?? ??? ?1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,1,
?? ??? ?1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
?? ??? ?1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,
?? ??? ?1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,1,
?? ??? ?1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,
?? ??? ?1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,
?? ??? ?1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,
?? ??? ?1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
?? ??? ?1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
?? ??? ?1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
?? ??? ?1,0,0,0,0,0,0,1,1,0,0,1,1,0,0,0,0,0,0,1,
?? ??? ?1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,
?? ??? ?1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
?? ??? ?1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
?? ??? ?1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
?? ??? ?1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
?? ??? ?1,0,0,0,0,0,0,0,31,32,33,0,0,0,0,0,0,0,0,1,
?? ??? ?1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
?? ?};//22行20列
?? ?shua(st);
?? ?while(1)
?? ?{
?? ??? ? ?yidong(a,b);
?? ??? ? ? if(strr==27)
?? ??? ? ?{
?? ??? ??? ? ztjm(st);
?? ??? ??? ? ?continue;
?? ??? ? ?}
?? ??? ? ?srand((unsigned)time(NULL));?
?? ??? ? if(rand()%50<15)
?? ??? ? ?{
?? ??? ??? ?
?? ??? ??? ? ?people->CombatC();
?? ??? ??? ? people->COMBAT();
?? ??? ??? ? shua(st);
?? ??? ? ?}
?? ??? ? ?if((zy+b==8||zy+b==9)&&(zx+a==0))
?? ??? ? ?{
?? ??? ??? ? ?zx=19;x=zx;
?? ??? ??? ? ?return 1;//主城
?? ??? ? ?}
?? ??? ? ?if(zx+a>0&&zx+a<21&&zy+b>0&&zy+b<19&&st[zx+a][zy+b]!=1&&st[zx+a][zy+b]<12)
?? ??? ? ?{
?? ??? ??? ? ?zx+=a,zy+=b;
?? ??? ??? ? ?xx=x;yy=y;
?? ??? ??? ? ?x=zx;y=zy*2;
?? ??? ? ? ?gotoxy(xx,yy);
?? ??? ? ? ?printf(" ?");
?? ? ? ? ? ?gotoxy(x,y);
?? ??? ? ? ?printf("%s",str[12]);
?? ??? ? ?}
?? ?}
}
inline int Map::map4()//東門
{
?? ?int a,b;
?? ?int st[22][20]={
?? ??? ?1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
?? ??? ?1,34,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
?? ??? ?1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
?? ??? ?1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
?? ??? ?1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
?? ??? ?1,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,1,
?? ??? ?1,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,1,
?? ??? ?1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
?? ??? ?1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
?? ??? ?1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
?? ??? ?1,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,1,
?? ??? ?1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
?? ??? ?13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
?? ??? ?25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
?? ??? ?1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
?? ??? ?1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,
?? ??? ?1,0,0,0,0,0,1,1,0,1,1,0,0,0,1,1,0,0,0,1,
?? ??? ?1,0,0,0,0,0,0,0,0,1,1,0,0,0,1,1,0,0,0,1,
?? ??? ?1,0,0,0,0,0,0,0,0,1,1,0,0,0,1,1,0,0,0,1,
?? ??? ?1,0,0,0,0,0,0,0,0,1,1,0,0,0,1,1,0,0,0,1,
?? ??? ?1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
?? ?};//22行20列
?? ??? ?shua(st);
?? ?while(1)
?? ?{
?? ??? ? ?yidong(a,b);
?? ??? ? ? if(strr==27)
?? ??? ? ?{
?? ??? ??? ? ztjm(st);
?? ??? ??? ? ?continue;
?? ??? ? ?}
?? ??? ? ?srand((unsigned)time(NULL));?
?? ??? ? if(rand()%50<15)
?? ??? ? ?{
?? ??? ??? ? ?people->CombatC();
?? ??? ??? ? people->COMBAT();
?? ??? ??? ?shua(st);
?? ??? ? ?}
?? ??? ? ?if((zx+a==12||zx+a==13)&&(zy+b==0))
?? ??? ? ?{
?? ??? ??? ? ?zy=18;y=2*zy;
?? ??? ??? ? ?return 1;//主城
?? ??? ? ?}
?? ??? ? ?if(zx+a>0&&zx+a<21&&zy+b>0&&zy+b<19&&st[zx+a][zy+b]!=1&&st[zx+a][zy+b]<12)
?? ??? ? ?{
?? ??? ??? ? ?zx+=a,zy+=b;
?? ??? ??? ? ?xx=x;yy=y;
?? ??? ??? ? ?x=zx;y=zy*2;
?? ??? ? ? ?gotoxy(xx,yy);
?? ??? ? ? ?printf(" ?");
?? ? ? ? ? ?gotoxy(x,y);
?? ??? ? ? ?printf("%s",str[12]);
?? ??? ? ?}
?? ?}
}
inline int Map::map5()//西門
{
?? ?int a,b;
?? ?int st[22][20]={
?? ??? ?1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
?? ??? ?1,36,37,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
?? ??? ?1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,
?? ??? ?1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,
?? ??? ?1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
?? ??? ?1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
?? ??? ?1,1,1,1,1,0,1,1,1,1,0,1,1,0,0,0,0,0,0,1,
?? ??? ?1,0,0,0,1,0,1,0,0,1,0,1,1,0,0,0,0,0,0,1,
?? ??? ?1,0,0,0,1,0,1,0,0,1,0,1,1,0,0,0,0,0,0,1,
?? ??? ?1,0,0,0,1,1,1,0,0,1,1,1,1,0,0,0,1,0,0,1,
?? ??? ?1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
?? ??? ?1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
?? ??? ?1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,
?? ??? ?1,1,1,1,1,1,1,1,1,0,1,1,0,0,0,0,0,0,0,25,
?? ??? ?1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,
?? ??? ?1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,
?? ??? ?1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,
?? ??? ?1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,
?? ??? ?1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,
?? ??? ?1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,
?? ??? ?1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
?? ?};//22行20列
?? ?shua(st);
?? ?while(1)
?? ?{
?? ??? ? ?yidong(a,b);
?? ??? ? ? if(strr==27)
?? ??? ? ?{
?? ??? ??? ? ztjm(st);
?? ??? ??? ? ?continue;
?? ??? ? ?}
?? ??? ? ? srand((unsigned)time(NULL));?
?? ??? ? if(rand()%50<15)
?? ??? ? ?{
?? ??? ??? ? people->CombatC();
?? ??? ??? ? people->COMBAT();
?? ??? ??? ?shua(st);
?? ??? ? ?}
?? ??? ? ?if((zx+a==12||zx+a==13)&&(zy+b==19))
?? ??? ? ?{
?? ??? ??? ? ? zy=1;y=2*zy;
?? ??? ??? ? ?return 1;//主城
?? ??? ? ?}
?? ??? ? ?if(zx+a>0&&zx+a<21&&zy+b>0&&zy+b<19&&st[zx+a][zy+b]!=1&&st[zx+a][zy+b]<12)
?? ??? ? ?{
?? ??? ??? ? ?zx+=a,zy+=b;
?? ??? ??? ? ?xx=x;yy=y;
?? ??? ??? ? ?x=zx;y=zy*2;
?? ??? ? ? ?gotoxy(xx,yy);
?? ??? ? ? ?printf(" ?");
?? ? ? ? ? ?gotoxy(x,y);
?? ??? ? ? ?printf("%s",str[12]);
?? ??? ? ?}
?? ?}
}
文件讀取:
███████████████████████████████████████
█ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?█ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?█
█ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?█ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?█
█ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?█ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?█
█ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?█ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?█
█ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?█ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?█
總結
- 上一篇: QQ数据库管理
- 下一篇: 富贵包这种常见颈椎病怎么改善?