新无止竞

首页 » C++源码 » 剑灵 文字游戏
2018-11-28
分类: C++源码

剑灵 文字游戏

文章作者:独自狂战
手机扫码查看

一、Android studio 3.5安装详解 1.安装IDE 安装前的准备:已装过要卸载,且删除C:useryourname 下.and

阅读(359) 评论(0) 百度已收录

剑灵 文字游戏

剑灵 文字游戏

源代码下载:

http://note.youdao.com/share/?id=c5743816d394f83d94ad432a0e244806&type=note

源代码:

//////////main.cpp//////////
#include "control.h"
#include "image.h"
#include "function.h"
int main()
{
 gamestart();
 return 0;
}
//////////image.h//////////
#ifndef IMAGE_H_INCLUDED
#define IMAGE_H_INCLUDED
void startimage();//开始画面
string newname();//玩家姓名
void selectmap(string name);//选择地图
void map1(string name);//土门客栈地图
void drugmap();//药店
void weaponmap();//武器店
void hunback();//浑天教背景
void wuback();//武林盟背景
void bossback(string na);//秦义绝背景介绍
void fightselect();//战斗选择
void showskill();//展示技能
void gameover();//游戏结束 战败
void exitimage();//退出游戏
#endif // IMAGE_H_INCLUDED
//////////image.cpp//////////
#include "control.h"
#include "image.h"
//开始界面
void startimage()
{
 moveCursor (32,5);
 cout<<"屌 丝 剑 灵 大 作 战";
 moveCursor (35,7);
 cout<<"[1] 新的开始";
 moveCursor (35,9);
 cout<<"[2] 旧的回忆";
 moveCursor (35,11);
 cout<<"[3] 离开游戏";
}
string newname()
{
 string name;
 system("cls");
 moveCursor (32,3);
 cout<<"屌 丝 剑 灵 大 作 战";
 moveCursor (28,9);
 cout<<"大侠请输入姓名:";
 cin>>name;
 return name;
}
void selectmap(string name)
{
// string name="test";
 system("cls");
 moveCursor (32,3);
 cout<<"屌 丝 剑 灵 大 作 战";
 moveCursor (35,4);
 cout<<"洪门弟子:"<<name;
 moveCursor (15,7);
 cout<<"[1] 土门客栈 [2] 修炼谷 [3] 挑战BOSS [4] 储存进度";
}
void map1(string name)
{
 system("cls");
 moveCursor (32,3);
 cout<<"屌 丝 剑 灵 大 作 战";
 moveCursor (35,4);
 cout<<"洪门弟子:"<<name;
 moveCursor (30,7);
 cout<<"[1]查看状态 [2]百草堂";
 moveCursor (30,9);
 cout<<"[3]铁匠铺 [0]返回上一页";
}
//注意要-1
void drugmap()
{
 system("cls");
 moveCursor (32,3);
 cout<<"欢迎来到百草堂";
 moveCursor (32,5);
 cout<<"请问大侠有什么需要的?";
 moveCursor (30,7);
 cout<<"[1] 炸鸡 恢复300HP 300元";
 moveCursor (30,8);
 cout<<"[2] 烤鸭 恢复500HP 500元";
 moveCursor (30,9);
 cout<<"[3] 鼠儿果 恢复50MP 100元";
 moveCursor (30,10);
 cout<<"[4] 灵芝 恢复100MP 200元";
 moveCursor (30,12);
 cout<<"[0] 返回上一级";
}
//注意不用-1
void weaponmap()
{
 system("cls");
 moveCursor (32,3);
 cout<<"欢迎来到铁匠铺";
 moveCursor (32,5);
 cout<<"请问大侠有什么需要的?";
 moveCursor (30,7);
 cout<<"[1] 卓越洪门剑 100攻击力 1000元";
 moveCursor (30,8);
 cout<<"[2] 卓越千魂剑 200攻击力 2000元";
 moveCursor (30,9);
 cout<<"[3] 卓越妖魔剑 300攻击力 3000元";
 moveCursor (30,10);
 cout<<"[4] 极限万魂剑 400攻击力 4000元";
 moveCursor (30,12);
 cout<<"[0] 返回上一级";
}
void hunback()
{
 system("cls");
 moveCursor (10,5);
 cout<<"大侠,大侠快救我,浑天教来了!!!";
 moveCursor (10,7);
 cout<<"小姐莫慌张,请慢慢道来.话说,这浑天教是??";
 moveCursor (10,9);
 cout<<"大侠是外地人吧,您有所不知,浑天教那些2b小青年是最近一段时间出现在";
 moveCursor (10,10);
 cout<<"土门客栈附近的小混混,经常抢路人的银鳞胸甲,调戏小姑娘.";
 moveCursor (10,11);
 cout<<"大侠可要帮我们做主啊!!";
 moveCursor (10,13);
 cout<<"岂有此理,光天化日,朗朗乾坤,竟有此种2b青年在土门客栈附近撒野.";
 moveCursor (10,14);
 cout<<"姑娘莫怕,待我收拾了那帮混混就去你家找你!!";
 moveCursor (10,16);
 cout<<"大侠请当心!";
 moveCursor (45,18);
 system("pause");
}
void wuback()
{
 system("cls");
 moveCursor (10,3);
 cout<<"前面那个!!给我站住!!";
 moveCursor (10,5);
 cout<<"嗯?你们是.....??";
 moveCursor (10,7);
 cout<<"我们是行侠仗义专门捕杀浑天教徒小混混的武林盟";
 moveCursor (10,8);
 cout<<"听说你最近在打附近的浑天教徒?都已经砍到10级了啊!";
 moveCursor (10,10);
 cout<<"哦,你们好.是呀,浑天教烧杀掳掠无恶不作,我实在看不下去.";
 moveCursor (10,12);
 cout<<"哎呦喂,说的和真的似的.小子,实话告诉你,你抢了我们的生意.";
 moveCursor (10,13);
 cout<<"我们武林盟自古以捕杀浑天教,收取村民供养为生";
 moveCursor (10,14);
 cout<<"最近因为你的出现村民都不来交贡品了,我劝你少管闲事,否则...";
 moveCursor (10,16);
 cout<<"否则怎样?我今天还就把这闲事管到底了!你们和那些败类有什么区别?!";
 moveCursor (10,17);
 cout<<"多说无益,拔剑吧!....呀啊,看招!!";
 moveCursor (10,19);
 cout<<"哼,敬酒不吃,兄弟们上!!";
 moveCursor (47,21);
 system("pause");
}
void bossback(string na)
{
 system("cls");
 moveCursor (10,5);
 cout<<na<<",你来了啊,没想到你能活到现在啊!";
 moveCursor (10,7);
 cout<<"哼,秦义绝,我今天就是来找你报仇的,我会让你后悔当年没杀死我!!";
 moveCursor (10,9);
 cout<<"呵呵,当年洪玄公那个傻老头为了能让你这个乖徒儿活下去";
 moveCursor (10,10);
 cout<<"竟然跪下来求我.哈哈哈,大名鼎鼎的力王,竟然为了一个废物来求我";
 moveCursor (10,11);
 cout<<"简直是笑话!我本想放你一条生路,你竟然自己过来送死.";
 moveCursor (10,13);
 cout<<"秦义绝,少说废话,今天我就要为师傅们报仇雪恨!!!";
 moveCursor (10,14);
 cout<<"拿命来!!!!";
 moveCursor (45,17);
 system("pause");
}
void fightselect()
{
 moveCursor (0,18);
 cout<<"[1]攻击 [2]技能 [3]防御 [4]包裹"<<endl;
}
void showskill()
{
 moveCursor (0,18);
 cout<<"等等啊先别打,让我想想扔哪个技能! "<<endl;
 cout<<"[1]天罡战气 攻击力增加20点,持续两回合 消耗40MP"<<endl;
 cout<<"[2]绝对防御 抵挡下一次攻击,持续两回合 消耗60MP"<<endl;
 cout<<"[0]返回"<<endl;
}
void gameover()
{
 system("cls");
 moveCursor (32,7);
 cout<<"胜败乃兵家常事,大侠请重新来过!!!!!";
 moveCursor (40,9);
 system("pause");
 exit(0);
}
//退出界面
void exitimage()
{
 system("cls");
 cout<<"  ▅▅▅▅▅▅▅   ▅▅▅▅▅    ▅ "<<endl;
 cout<<"   ▅▅█▅▅    █ ▅ █    █ "<<endl;
 cout<<"   █▅█▅█    █ █ █    █ "<<endl;
 cout<<"  ▅█▅█▅█▅    ◢◤▋ ▅   ▼"<<endl;
 cout<<"   █  ▅█   ██◤ ███   ●"<<endl;
}
//////////function.h//////////
#ifndef FUNCTION_H_INCLUDED
#define FUNCTION_H_INCLUDED
void gamestart();//游戏总控制整合
#endif // FUNCTION_H_INCLUDED
//////////funtion.cpp//////////
#include "control.h"
#include "image.h"
#include "function.h"
void gamestart()
{
 //PlaySound("my soul.wav", NULL,SND_FILENAME | SND_PURGE | SND_NODEFAULT | SND_ASYNC | SND_LOOP);
 //初始化
 char selectnum;//一级控制
 char selectnum2;//二级控制
 char selectnum3;//三级控制
 int skillresult=3;
 int drugresult=3;
 int flaghuntian=0;
 int flagwulin=0;
 int flagboss=0;
 int deathflag1=0;
 int deathflag2=0;
 int level=0;
 int money=0;
 int exp=0;
 string name;
 character* cha=0;
 setCursorVisible (0);
// setWindowTitle ("屌 丝 剑 灵 大 作 战-XiaoT");
//游戏开始
 while(1)
 {
 startimage();
 selectnum=getch();
 if(selectnum=='1'||selectnum=='2'||selectnum=='3')
 break;
 }
//读档
 if(selectnum=='2')
 {
 cha=new character;
 cha->readdata();
 name=cha->getname();
 goto A;
 }
//退出
 if(selectnum=='3')
 exitimage();
//游戏开始
 if(selectnum=='1')
 {
 name=newname();
 cha=new character(name);
 A: while(1)
 {
 selectmap(name);
 selectnum=getch();
 switch(selectnum)
 {
 //土门客栈场景
 case '1':
 {
 while(1)
 {
 map1(name);
 selectnum2=getch();
 //[1]查看状态
 if(selectnum2=='1')
 {
 system("cls");
 while(1)
 {
 cha->showall();
 cha->showdrug();
 selectnum3=getch();
 if(selectnum3=='0')
 break;
 if(selectnum3>='1'&&selectnum3<='4')
 {
 cha->usedrug(selectnum3-49);
 system("cls");
 }
 }
 continue;
 }
 //[2]百草堂 买药
 if(selectnum2=='2')
 {
 while(1)
 {
 drugmap();
 cha->showmoney();
 selectnum3=getch();
 if(selectnum3>='1'&&selectnum3<='4')
 cha->buydrug(selectnum3-49);
 if(selectnum3=='0')
 break;
 }
 }
 //[3]铁匠铺 买武器
 if(selectnum2=='3')
 {
 while(1)
 {
 weaponmap();
 cha->showmoney();
 selectnum3=getch();
 if(selectnum3>='1'&&selectnum3<='4')
 cha->buyweapon(selectnum3-48);
 if(selectnum3=='0')
 break;
 }
 }
 if(selectnum2=='0')
 break;
 }
 selectnum2=0;
 selectnum3=0;
 continue;
 }
 //小怪
 case '2':
 {
 level=cha->getrank();
 if(level<10)
 {
 if(flaghuntian==0)
 {
 flaghuntian++;
 hunback();
 }
 system("cls");
 huntian* hun=new huntian();
 exp=hun->getexp();
 money=hun->getmoney();
 while(1)
 {
 //战斗界面
 hun->showall();
 cha->showall();
 cout<<endl;
 fightselect();
 selectnum2=getch();
 //[1]普通攻击
 if(selectnum2=='1')
 {
 cha->kill(*hun);
 deathflag1=cha->ifdeath();
 deathflag2=hun->ifdeath();
 //玩家死亡
 if(deathflag1==1)
 gameover();
 //怪物死亡
 if(deathflag2==1)
 {
 deathflag2=0;
 cha->rankup(exp,money);
 cha->reskill();
 break;
 }
 }
 //[2]技能
 if(selectnum2=='2')
 {
 showskill();
 while(1)
 {
 selectnum3=getch();
 if(selectnum3=='1'||selectnum3=='2')
 {
 skillresult=cha->useskill(selectnum3-49);
 if(skillresult==1)
 cha->skillkill(*hun,selectnum3-49);
 break;
 }
 if(selectnum3=='0')
 break;
 }
 }
 //[3]防御
 if(selectnum2=='3')
 {
 cha->defence();
 }
 //[4]包裹
 if(selectnum2=='4')
 {
 cha->showpack();
 while(1)
 {
 selectnum3=getch();
 if(selectnum3>='1'||selectnum3<='4')
 {
 drugresult=cha->usedrug(selectnum3-49);
 if(drugresult==1)
 cha->drugkill(*hun);
 break;
 }
 if(selectnum3=='0')
 break;
 }
 }
 }
 }
 if(level>=10)
 {
 if(flagwulin==0)
 {
 flagwulin++;
 wuback();
 }
 system("cls");
 wulin* wu=new wulin();
 exp=wu->getexp();
 money=wu->getmoney();
 while(1)
 {
 //战斗界面
 wu->showall();
 cha->showall();
 cout<<endl;
 fightselect();
 selectnum2=getch();
 //[1]普通攻击
 if(selectnum2=='1')
 {
 cha->kill(*wu);
 deathflag1=cha->ifdeath();
 deathflag2=wu->ifdeath();
 //玩家死亡
 if(deathflag1==1)
 gameover();
 //怪物死亡
 if(deathflag2==1)
 {
 deathflag2=0;
 cha->rankup(exp,money);
 cha->reskill();
 break;
 }
 }
 //[2]技能
 if(selectnum2=='2')
 {
 showskill();
 while(1)
 {
 selectnum3=getch();
 if(selectnum3=='1'||selectnum3=='2')
 {
 skillresult=cha->useskill(selectnum3-49);
 if(skillresult==1)
 cha->skillkill(*wu,selectnum3-49);
 break;
 }
 if(selectnum3=='0')
 break;
 }
 }
 //[3]防御
 if(selectnum2=='3')
 {
 cha->defence();
 }
 //[4]包裹
 if(selectnum2=='4')
 {
 cha->showpack();
 while(1)
 {
 selectnum3=getch();
 if(selectnum3>='1'||selectnum3<='4')
 {
 drugresult=cha->usedrug(selectnum3-49);
 if(drugresult==1)
 cha->drugkill(*wu);
 break;
 }
 if(selectnum3=='0')
 break;
 }
 }
 }
 }
 continue;
 }
 //boss
 case '3':
 {
 if(flagboss==0)
 {
 flagboss++;
 bossback(name);
 }
 system("cls");
 boss* qin=new boss();
 exp=qin->getexp();
 money=qin->getmoney();
 while(1)
 {
 //战斗界面
 qin->showall();
 cha->showall();
 cout<<endl;
 fightselect();
 selectnum2=getch();
 //[1]普通攻击
 if(selectnum2=='1')
 {
 cha->kill(*qin);
 deathflag1=cha->ifdeath();
 deathflag2=qin->ifdeath();
 //玩家死亡
 if(deathflag1==1)
 gameover();
 //怪物死亡
 if(deathflag2==1)
 {
 deathflag2=0;
 cha->rankup(exp,money);
 cha->reskill();
 break;
 }
 }
 //[2]技能
 if(selectnum2=='2')
 {
 showskill();
 while(1)
 {
 selectnum3=getch();
 if(selectnum3=='1'||selectnum3=='2')
 {
 skillresult=cha->useskill(selectnum3-49);
 if(skillresult==1)
 cha->skillkill(*qin,selectnum3-49);
 break;
 }
 if(selectnum3=='0')
 break;
 }
 }
 //[3]防御
 if(selectnum2=='3')
 {
 cha->defence();
 }
 //[4]包裹
 if(selectnum2=='4')
 {
 cha->showpack();
 while(1)
 {
 selectnum3=getch();
 if(selectnum3>='1'||selectnum3<='4')
 {
 drugresult=cha->usedrug(selectnum3-49);
 if(drugresult==1)
 cha->drugkill(*qin);
 break;
 }
 if(selectnum3=='0')
 break;
 }
 }
 }
 continue;
 }
 //存档
 case '4':
 {
 cha->savedata();
 system("pause");
 continue;
 }
 }
 }
 }
}
//////////control.h//////////
#include<iostream>
#include <windows.h>
#include <mmsystem.h>
//#pragma comment(lib, "winmm.lib")
#include <conio.h>
#include <iomanip>
#include <fstream>
#include <ctime>
#ifndef CONTROL_H_INCLUDED
#define CONTROL_H_INCLUDED
using namespace std;
//功能函数
int getMaxSize ();
void moveCursor (int, int);//移动光标
void setWindowTitle (char*);//设置标题
void setCursorVisible (int );//光标隐藏
class huntian;
//人物类
class character
{
 //人物属性
 protected:
 string name;
 int rank;
 int hpmax;
 int hpnow;
 int mpmax;
 int mpnow;
 int expmax;
 int expnow;
 int money;
 int atk;
 string weaponname[5];
 int weapon[5];
 int weaponhold;//持有哪个武器
 int weaponprice[5];
 int drugnum[4];
 int drugprice[4];
 string drugname[4];
 string drugint[4];//药品介绍
 int drugaffect[4];
 string skillname[2];
 int skillspend[2];
 int skillstate[2];
 int skilllast;//技能持续两回合
 string skillint[2];//技能介绍
 public:
 character ();
 character(string na);//构造函数初始化
//展示一些值
 void showall();
 void showmoney();
 void showpack();
 void showdrug();
//获取一些值
 int getrank();
 int getexp();
 int getmoney();
 string getname();
//功能函数
 void buydrug(int num);
 void buyweapon(int num);
 void savedata();
 int readdata();
 void atkup();//提升攻击力
 int ifdeath();//判断死亡
 void rankup(int exp,int mon);//升级
 int useskill(int sel);//使用技能
 void reskill();//重置技能
 int usedrug(int sel);//吃药
 void defence();//防御
//友元
 void kill(huntian &t);//攻击函数
 void skillkill(huntian &t,int key);//使用技能回合设定
 void drugkill(huntian &t);//吃药回合设定
};
//怪物
//浑天教徒
class huntian : public character
{
 public:
 huntian();
 void showall();
 friend void character::kill(huntian &t);
 friend void character::skillkill(huntian &t,int key);
 friend void character::drugkill(huntian &t);
};
//武林盟
class wulin :public huntian
{
 public:
 wulin();
};
//boss
class boss :public huntian
{
 public:
 boss();
 void showall();
};
#endif // CONTROL_H_INCLUDED
//////////control.cpp//////////
#include "control.h"
//新建人物及其初始化
character::character(){}
character::character(string na)
{
 name=na;
 rank=1;
 hpnow=hpmax=500;
 mpmax=mpnow=100;
 expmax=100;
 expnow=0;
 money=450;
 weaponname[0]="洪门断剑";
 weaponname[1]="卓越洪门剑";
 weaponname[2]="卓越千魂剑";
 weaponname[3]="卓越妖魔剑";
 weaponname[4]="极限万魂剑";
 weaponprice[1]=1000;
 weaponprice[2]=2000;
 weaponprice[3]=3000;
 weaponprice[4]=4000;
 weapon[0]=50;
 for(int i=1;i<5;i++)
 {
 weapon[i]=i*100;
 }
 weaponhold=0;
 atk=10+weapon[weaponhold]+(rank-1)*2;
 //初始化药品数量
 for(int i=0;i<4;i++)
 {
 drugnum[i]=0;
 }
 drugname[0]="炸鸡";
 drugname[1]="烤鸭";
 drugname[2]="鼠儿果";
 drugname[3]="灵芝";
 drugint[0]="恢复300HP";
 drugint[1]="恢复500HP";
 drugint[2]="恢复50MP";
 drugint[3]="恢复100MP";
 drugprice[0]=300;
 drugprice[1]=500;
 drugprice[2]=100;
 drugprice[3]=200;
 drugaffect[0]=300;
 drugaffect[1]=500;
 drugaffect[2]=50;
 drugaffect[3]=100;
 skillname[0]="天罡战气";
 skillname[1]="绝对防御";
 skillspend[0]=40;
 skillspend[1]=60;
 skillstate[0]=0;
 skillstate[1]=0;
 skilllast=2;
 skillint[0]="攻击力增加20点,持续两回合";
 skillint[1]="抵挡下一次攻击,持续两回合";
}
//显示人物状态
void character::showall()
{
 cout<<"-----------------------------------------------------------------------"<<endl;
 cout<<"名称:"<<setw(10)<<name<<" "<<"等级:"<<setw(5)<<rank<<endl;
 cout<<"-----------------------------------------------------------------------"<<endl;
 cout<<"HP:"<<setw(6)<<hpnow<<"/"<<setw(6)<<hpmax<<" "
 <<" MP:"<<setw(6)<<mpnow<<"/"<<setw(6)<<mpmax<<endl;
 cout<<"-----------------------------------------------------------------------"<<endl;
 cout<<"攻击:"<<setw(6)<<atk<<" "
 <<"武器:"<<setw(10)<<weaponname[weaponhold]<<endl;
 cout<<"-----------------------------------------------------------------------"<<endl;
 cout<<"金币: "<<setw(6)<<money<<" "
 <<"经验:"<<setw(10)<<expnow<<"/"<<setw(10)<<expmax<<endl;
 cout<<"-----------------------------------------------------------------------"<<endl;
}
void character::showdrug()
{
 for(int i=0;i<4;i++)
 {
 if(drugnum[i]!=0)
 cout<<"["<<i+1<<"]"<<" "<<drugname[i]<<" "<<drugnum[i]<<"个 "<<endl;
 }
 cout<<"[0] 返回"<<endl;
 cout<<"-----------------------------------------------------------------------"<<endl;
}
void character::buydrug(int num)
{
 if(drugprice[num]<=money)
 {
 money-=drugprice[num];
 drugnum[num]++;
 moveCursor (26,14);
 cout<<"你买到了1个"<<drugname[num]<<",花掉了"<<drugprice[num]<<"元";
 Sleep(600);
 }
 else
 {
 moveCursor (26,14);
 cout<<"您的金币不够";
 Sleep(600);
 }
}
void character::buyweapon(int num)
{
 if (weaponprice[num]<=money&&num!=weaponhold)
 {
 money-=weaponprice[num];
 weaponhold=num;
 moveCursor (26,14);
 cout<<"你已经装备了"<<weaponname[num]<<",花掉了"<<drugprice[num]<<"元";
 atk=10+weapon[weaponhold]+(rank-1)*2;
 moveCursor (26,15);
 cout<<"当前攻击力为"<<atk;
 Sleep(850);
 }
 else if(weaponprice[num]<=money)
 {
 moveCursor (26,14);
 cout<<"你已经拥有该装备了,无需再次购买!";
 Sleep(600);
 }
 else
 {
 moveCursor (26,14);
 cout<<"您的金币不够";
 Sleep(600);
 }
}
//小值的取得
void character::showmoney()
{
 moveCursor (0,0);
 cout<<"您有"<<money<<"元";
}
int character::getrank()
{
 return rank;
}
int character::getexp()
{
 return expnow;
}
int character::getmoney()
{
 return money;
}
string character::getname()
{
 return name;
}
//技能与功能
void character::atkup()
{
 atk+=20;
}
//死了返回1; 活着返回0;
int character::ifdeath()
{
 if(hpnow==0)
 return 1;
 else
 return 0;
}
//重置技能
void character::reskill()
{
 for(int i=0;i<2;i++)
 skillstate[i]=0;
}
//升级
void character::rankup(int exp,int mon)
{
 srand(time(0));
 //打怪得奖励
 if(exp!=0)
 {
 //10%得红药或者蓝药
 if(rand()%10==0)
 {
 drugnum[0]++;
 cout<<"获得一个"<<drugname[0]<<endl;
 Sleep(800);
 }
 if(rand()%10==1)
 {
 drugnum[2]++;
 cout<<"获得一个"<<drugname[2]<<endl;
 Sleep(800);
 }
 //加属性
 expnow+=exp;
 money+=mon;
 if(expnow>=expmax)
 {
 rank++;
 expnow-=expmax;
 expmax+=50;
 atk=10+weapon[weaponhold]+(rank-1)*3;
 hpmax+=rank*100*0.75;
 hpnow=hpmax;
 mpmax+=rank*20*0.55;
 mpnow=mpmax;
 cout<<"恭喜!你升级到了 "<<rank<<"级"<<endl;
 Sleep(1200);
 }
 }
}
void character::kill(huntian &t)
{
 int tmpatk=0;
 int playerdamage;
 int def=0;
 int monsterdamage;
 //技能效果
 if(skillstate[0]>0)
 {
 tmpatk=20;
 skillstate[0]--;
 }
 if(skillstate[1]>0)
 {
 def=t.atk;
 skillstate[1]--;
 }
 hpnow=hpnow-t.atk+def;
 if(hpnow<=0)
 hpnow=0;
 t.hpnow=t.hpnow-atk-tmpatk;
 if(t.hpnow<=0)
 t.hpnow=0;
 moveCursor (0,19);
 playerdamage=atk+tmpatk;
 tmpatk=0;
 cout<<"我凶残得一刀砍掉了 "<<playerdamage<<" 点血量";
 moveCursor (0,20);
 monsterdamage=t.atk-def;
 def=0;
 cout<<"对手重重得咬了我一口 "<<monsterdamage<<" 点血量"<<endl;
 Sleep(1000);
}
void character::skillkill(huntian &t,int key)
{
 int def=0;
 int monsterdamage;
 //技能效果
 if(skillstate[0]>0&&key!=0)
 {
 skillstate[0]--;
 }
 if(skillstate[1]>0&&key!=1)
 {
 def=t.atk;
 skillstate[1]--;
 }
 hpnow=hpnow-t.atk+def;
 if(hpnow<=0)
 hpnow=0;
 moveCursor (0,23);
 monsterdamage=t.atk-def;
 def=0;
 cout<<"对手重重得咬了我一口 "<<monsterdamage<<" 点血量";
 Sleep(1100);
}
//1使用成功 0使用失败
int character::useskill(int sel)
{
 if(sel==0||sel==1)
 {
 if(skillspend[sel]<=mpnow)
 {
 if(skillstate[sel]==0)
 {
 skillstate[sel]=skilllast;
 mpnow-=skillspend[sel];
 cout<<"技能使用成功!"<<endl;
 Sleep(600);
 return 1;
 }
 else
 {
 cout<<"你这个技能的状态还在持续!"<<endl;
 Sleep(600);
 return 0;
 }
 }
 else
 {
 cout<<"你的魔力值不足!"<<endl;
 Sleep(600);
 return 0;
 }
 }
 return 2;
}
void character::defence()
{
 //技能消耗一回合
 if(skillstate[0]>0)
 {
 skillstate[0]--;
 }
 if(skillstate[1]>0)
 {
 skillstate[1]--;
 }
 cout<<"我对他放电,竟然抵挡住了一次攻击!!!!!"<<endl;
 Sleep(900);
}
void character::showpack()
{
 moveCursor (0,18);
 for(int i=0;i<4;i++)
 {
 cout<<"["<<i+1<<"]"<<drugname[i]<<" "<<drugnum[i]<<"个 "<<drugint[i]<<" "<<endl;
 }
 cout<<"[0]返回"<<endl;
}
//1 成功 0失败
int character::usedrug(int sel)
{
 //hp
 if(sel>=0&&sel<=2)
 {
 if(drugnum[sel]>0)
 {
 drugnum[sel]--;
 hpnow+=drugaffect[sel];
 if(hpnow>hpmax)
 hpnow=hpmax;
 cout<<drugname[sel]<<"使用成功!"<<endl;
 Sleep(600);
 return 1;
 }
 else
 {
 cout<<"你没有这个物品!"<<endl;
 Sleep(600);
 return 0;
 }
 }
 //mp
 if(sel>=3&&sel<=4)
 {
 if(drugnum[sel]>0)
 {
 drugnum[sel]--;
 mpnow+=drugaffect[sel];
 if(mpnow>mpmax)
 mpnow=mpmax;
 cout<<drugname[sel]<<"使用成功!"<<endl;
 Sleep(600);
 return 1;
 }
 else
 {
 cout<<"你没有这个物品!"<<endl;
 Sleep(600);
 return 0;
 }
 }
 return 2;
}
void character::drugkill(huntian &t)
{
 int def=0;
 int monsterdamage;
 //技能消耗一回合
 if(skillstate[0]>0)
 {
 skillstate[0]--;
 }
 if(skillstate[1]>0)
 {
 def=t.atk;
 skillstate[1]--;
 }
 hpnow=hpnow-t.atk+def;
 if(hpnow<=0)
 hpnow=0;
 monsterdamage=t.atk-def;
 def=0;
 cout<<"对手重重得咬了我一口 "<<monsterdamage<<" 点血量";
 Sleep(1100);
}
//怪物设定
huntian::huntian()
{
 name="浑天教混混";
 srand(time(0));
 hpnow=rand()%260+245;
 mpnow=10;
 expnow=100;
 atk=rand()%30+30;
 money=450;
}
void huntian::showall()
{
 system("cls");
 cout<<"-----------------------------------------------------------------------"<<endl;
 cout<<"名称:"<<setw(10)<<name<<" "<<endl;
 cout<<"-----------------------------------------------------------------------"<<endl;
 cout<<"HP:"<<setw(6)<<hpnow<<" "<<" MP:"<<setw(6)<<mpnow<<endl;
 cout<<"-----------------------------------------------------------------------"<<endl;
 cout<<"攻击:"<<setw(6)<<atk<<" "<<endl;
 cout<<"-----------------------------------------------------------------------"<<endl;
}
wulin::wulin()
{
 name="武林盟败类";
 srand(time(0));
 hpnow=rand()%100+695;
 mpnow=100;
 expnow=250;
 atk=rand()%140+70;
 money=750;
}
boss::boss()
{
 name="秦 义 绝";
 srand(time(0));
 hpnow=rand()%2100+1950;
 mpnow=1000;
 expnow=1000;
 atk=rand()%315+300;
 money=1750;
}
void boss::showall()
{
 system("cls");
 cout<<"-----------------------------------------------------------------------"<<endl;
 cout<<"名称:"<<setw(10)<<name<<" "
 <<"小样,就你还敢挑战我秦义绝?? 赶紧乖乖受死吧~~~"<<endl;
 cout<<"-----------------------------------------------------------------------"<<endl;
 cout<<"HP:"<<setw(6)<<hpnow<<" "<<" MP:"<<setw(6)<<mpnow<<endl;
 cout<<"-----------------------------------------------------------------------"<<endl;
 cout<<"攻击:"<<setw(6)<<atk<<" "<<endl;
 cout<<"-----------------------------------------------------------------------"<<endl;
}
//存档
void character::savedata()
{
 fstream saveout;
 saveout.open("save.sav",ios::out);
 saveout<<name<<" "<<rank<<" "<<hpnow<<" "<<hpmax<<" "<<mpnow<<" "<<mpmax<<endl;
 saveout<<atk<<endl;
 saveout<<expnow<<" "<<expmax<<" "<<money<<" "<<weaponhold<<endl;
 for(int i=0;i<4;i++)
 {
 saveout<<drugnum[i]<<" "<<drugname[i]<<" "<<drugprice[i]
 <<" "<<drugint[i]<<" "<<drugaffect[i]<<endl;
 }
 for(int i=0;i<5;i++)
 {
 saveout<<weapon[i]<<" "<<weaponname[i]<<" "<<weaponprice[i]<<endl;
 }
 for(int i=0;i<2;i++)
 {
 saveout<<skillname[i]<<" "<<skillspend[i]<<" "
 <<skillstate[i]<<" "<<skillint[i]<<endl;
 }
 saveout<<skilllast<<endl;
 saveout.close();
 system("cls");
 moveCursor (28,7);
 cout<<"数据保存成功!"<<endl;
}
//读档
int character::readdata()
{
 fstream savein;
 savein.open("save.sav",ios::in);
 if(!savein)
 {
 system("cls");
 moveCursor (28,7);
 cout<<"文件不存在,或打开失败!"<<endl;
 return 0;
 }
 savein>>name>>rank>>hpnow>>hpmax>>mpnow>>mpmax;
 savein>>atk;
 savein>>expnow>>expmax>>money>>weaponhold;
 for(int i=0;i<4;i++)
 {
 savein>>drugnum[i]>>drugname[i]>>drugprice[i]
 >>drugint[i]>>drugaffect[i];
 }
 for(int i=0;i<5;i++)
 {
 savein>>weapon[i]>>weaponname[i]>>weaponprice[i];
 }
 for(int i=0;i<2;i++)
 {
 savein>>skillname[i]>>skillspend[i]>>skillstate[i]>>skillint[i];
 }
 savein>>skilllast;
 savein.close();
 cout<<"数据读取成功!"<<endl;
 return 1;
}
//返回一行最大可以容纳的字符数
int getMaxSize () {
HANDLE t_handle = GetStdHandle (STD_OUTPUT_HANDLE);
 CONSOLE_SCREEN_BUFFER_INFO t_info;
 GetConsoleScreenBufferInfo (t_handle, &t_info);
return t_info.dwSize.X;
}
//将输出符号定位到第[p_y]行第[p_x]个字符上。
void moveCursor (int p_x, int p_y) {
int t_max = getMaxSize ();
p_x = p_x < 1 ? 1 : (p_x >= t_max ? t_max - 1: p_x);
p_y = p_y < 1 ? 1 : p_y;
COORD t_pos;
t_pos.X = p_x - 1;
t_pos.Y = p_y - 1;
HANDLE t_handle = GetStdHandle (STD_OUTPUT_HANDLE);
SetConsoleCursorPosition (t_handle, t_pos);
}
//设置光标是否可见,0为不可见,其它数字为可见
void setCursorVisible (int p_visitble) {
HANDLE t_handle = GetStdHandle (STD_OUTPUT_HANDLE);
CONSOLE_CURSOR_INFO t_info;
GetConsoleCursorInfo (t_handle, &t_info);
t_info.bVisible = p_visitble == FALSE ? FALSE : TRUE;
SetConsoleCursorInfo (t_handle, &t_info);
}
//设置窗口标题,可以如下调用: setWindowTitle ("窗口标题");
void setWindowTitle (char* p_title) {
SetConsoleTitle (p_title);
}

文章如无特别注明均为原创! 作者: 独自狂战, 转载或复制请以 超链接形式 并注明出处 新无止竞博客 - 专注网络技术资源分享的IT博客
原文地址《 剑灵 文字游戏》发布于2018-11-28

分享到:
打赏

评论

游客

切换注册

登录

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录
切换登录

注册