背景
最近自学动态规划和图论,真的很难,所以想放松一下,用了3天的时间自己手敲,编了一个哈利波特的游戏(因为我是哈迷)。目前功能尚未完善,后续更新。
简单的介绍
后期会增加提升等级和颜色变换的功能,敬请期待。当然啦,如果您有什么好的建议,可以私信我哦!
代码部分
#include<bits/stdc++.h>
#include<windows.h>
#include<stdlib.h>
#include<ctime>
using namespace std;
const int N=1e6+10;
struct id
{
bool flag;
string name;
string password;
int attack;
int defense;
int life;
int big_life;
int level;
int experience;
string wand;
int coin;
string bag[N];
int bag_len;
int speed;
int usual_attack[15]={10,10,20,80,30,50,15,30,10,60,60,120,50};
int kill_attack[5]={1,1,1};
int jinkuid;
string jinkupass;
};
struct gu
{
int coin;
int experience;
bool flag;
string password;
};
map<string,id>user;
map<int,gu>jinku;
int jinku_id;
string d_user;
string monster[10]={"地精","巨人","博格特","摄魂怪","巨型蜘蛛","龙","蛇怪"};
int monster_attack[10]={8,15,20,30,50,100,500};
string spell_usual[15]={"昏昏倒地","腿立僵停死","统统石化","除你武器","火焰熊熊","四分五裂","力松劲泄","粉身碎骨","障碍重重","速速禁锢","万弹齐发","神锋无影","霹雳爆炸"};
string spell_kill[5]={"阿瓦达索命","钻心剜骨","魂魄出窍"};
void init_slow_out(string s,int x)
{
for(int i=0;i<s.size();i++)
{
cout<<s[i];
Sleep(x);
}
cout<<endl;
return;
}
void trad(int k,int num)
{
switch(k)
{
case 1:user[d_user].attack=num;break;
case 2:user[d_user].defense=num;break;
case 3:user[d_user].speed=num;break;
case 4:user[d_user].life=num;break;
case 5:user[d_user].big_life=num;break;
case 6:user[d_user].level=num;break;
case 7:user[d_user].experience=num;break;
case 8:user[d_user].coin=num;break;
}
}
bool sign_in(string name,string pass)
{
signin_again:
string _name,_pass;
freopen("C:\\game.txt","r",stdin);
cin>>_name>>_pass;
freopen("CON","r",stdin);
cin.clear();
if(name==_name&&pass==_pass)
{
d_user=name;
user[d_user].flag=true;
string we="登入成功!欢迎,巫师"+name+"!";
init_slow_out(we,50);
int num;
string cum;
freopen("C:\\game.txt","r",stdin);
cin>>cum;
user[d_user].name=cum;
cin>>cum;
user[d_user].password=cum;
for(int i=1;i<=8;i++)
{
cin>>num;
trad(i,num);
}
cin>>cum;
user[d_user].wand=cum;
cin>>num;
user[d_user].bag_len=num;
for(int i=1;i<=num;i++)
{
cin>>cum;
user[d_user].bag[i]=cum;
}
cin>>num;
user[d_user].jinkuid=num;
jinku[num].flag=true;
cin>>cum;
jinku[num].password=cum;
freopen("CON","r",stdin);
cin.clear();
cout.clear();
return true;
}
else
{
init_slow_out("用户名或密码输入错误!",50);
return false;
}
}
void sign_out()
{
freopen("C:\\game.txt","w",stdout);
cout<<d_user<<" "<<user[d_user].password<<endl;
cout<<user[d_user].attack<<" "<<user[d_user].defense<<" "<<user[d_user].speed<<" "<<user[d_user].life<<" "<<user[d_user].big_life<<endl;
cout<<user[d_user].level<<" "<<user[d_user].experience<<" "<<user[d_user].coin<<endl;
cout<<user[d_user].wand<<" "<<user[d_user].bag_len<<endl;
for(int i=0;i<user[d_user].bag_len;i++)
{
cout<<user[d_user].bag[i]<<" ";
}
cout<<endl<<user[d_user].jinkuid<<" "<<jinku[user[d_user].jinkuid].password;
freopen("CON","w",stdout);
cin.clear();
cout.clear();
return;
}
void init_begin()
{
want_to_do:
cout<<endl;
init_slow_out("请选择你的操作:",50);
init_slow_out("1.登录 2.注册 3.退出",50);
int cz;
cin>>cz;
if(cz==1)
{
string name;
cout<<endl;
init_slow_out("请输入你的名称:",50);
cin>>name;
input_password:
string pass;
cout<<endl;
init_slow_out("请输入你的密码:",50);
cin>>pass;
bool f=sign_in(name,pass);
if(f)return;
goto want_to_do;
}
else if(cz==2)
{
string wname,wpass;
cout<<endl;
init_slow_out("输入你想创建的用户名:",50);
cin>>wname;
cout<<endl;
init_slow_out("输入你的初始密码:",50);
cin>>wpass;
user[wname].name=wname;
user[wname].flag=true;
user[wname].password=wpass;
user[wname].attack=10;
user[wname].defense=5;
user[wname].life=100;
user[wname].big_life=100;
user[wname].level=1;
user[wname].experience=10;
user[wname].wand="普通魔杖";
user[wname].coin=1000;
user[wname].bag_len=0;
user[wname].speed=0;
user[wname].jinkuid=rand()%99999+1;
user[wname].jinkupass="123";
freopen("C:\\game.txt","w",stdout);
cout<<wname<<" "<<wpass<<endl;
cout<<10<<" "<<5<<" "<<0<<" "<<100<<" "<<100<<" "<<1<<endl;
cout<<10<<" "<<1000<<" "<<"普通魔杖"<<" "<<0<<" "<<user[wname].jinkuid<<" "<<user[wname].jinkupass;
freopen("CON","w",stdout);
cin.clear();
cout.clear();
system("cls");
MessageBox(NULL,("注册用户成功!请重启游戏,然后登录开始游戏吧!"),("注册用户"),MB_OK);
MessageBox(NULL,("因为您是第一次体验此游戏,下面是两条游戏基本遵守规则:"),("游戏提示"),MB_OK);
MessageBox(NULL,("第一,请不要输入与游戏无关的内容,否则会导致程序崩溃,数据丢失,后果自负!"),("游戏提示"),MB_OK);
MessageBox(NULL,("第二,请不要擅自修改game.txt中的内容,否则会导致游戏登录失败或崩溃!"),("游戏提示"),MB_OK);
MessageBox(NULL,("当前游戏仅支持注册一个账户,不支持多个!如果您强制注册了一个新的账号,旧的账号里所有的数据将会丢失!"),("游戏提示"),MB_OK);
exit(0);
}
else if(cz==3)
{
if(MessageBox(NULL,("你确定吗?"),("退出游戏"),MB_ICONINFORMATION|MB_YESNO)==IDYES)
{
sign_out();
init_slow_out("好的,欢迎下次再来!",50);
sign_out();
Sleep(300);
exit(0);
}
else
{
system("cls");
goto want_to_do;
}
}
else cout<<endl;init_slow_out("输入错误!",50);Sleep(300);goto want_to_do;
}
void cout_user_thing()
{
system("cls");
cout<<"-------------------个人主页-------------------"<<endl<<endl;
cout<<"当前用户名:"<<user[d_user].name<<endl;
cout<<"密码:"<<user[d_user].password<<endl;
cout<<"攻击力:"<<user[d_user].attack<<endl;
cout<<"防御力:"<<user[d_user].defense<<endl;
cout<<"速度:"<<user[d_user].speed<<endl;
cout<<"生命值:"<<user[d_user].life<<"/"<<user[d_user].big_life<<endl;
cout<<"等级:"<<user[d_user].level<<endl;
cout<<"经验值:"<<user[d_user].experience<<endl;
cout<<"金币:"<<user[d_user].coin<<endl;
cout<<"魔杖:"<<user[d_user].wand<<endl;
cout<<"背包内东西数量:"<<user[d_user].bag_len<<"/"<<"1000000"<<endl;
cout<<"金库ID:"<<user[d_user].jinkuid<<endl;
cout<<"金库密码:"<<jinku[user[d_user].jinkuid].password<<endl;
system("pause");
return;
}
void hit(int k)
{
string mname=monster[k-1];
int ata=monster_attack[k-1];
int monlife;
if(k-1>=0&&k-1<=2)monlife=rand()%100+50;
else if(k-1>=3&&k-1<=4)monlife=rand()%300+100;
else if(k-1>=5&&k-1<=6)monlife=rand()%500+300;
else monlife=rand()%1000+500;
cout<<endl<<"你目前的战斗力:"<<user[d_user].attack<<endl;
cout<<"你的防御力:"<<user[d_user].defense<<endl;
system("pause");
cout<<"你要对战的怪物:"<<mname<<endl;
system("pause");
cout<<"怪物"<<mname<<"的战斗力为"<<ata<<endl;
system("pause");
cout<<"开始战斗!!!"<<endl<<endl;
system("pause");
int no=0;
int youlife=user[d_user].life;
while(monlife>0&&youlife>0)
{
int ws=rand()%14;
int gj=rand()%10+1;
cout<<endl<<"你发动了第"<<++no<<"次攻击,对"<<mname<<"使用了"<<spell_usual[ws]<<endl;
Sleep(1000);
if(gj%2==0)
{
cout<<endl<<mname<<"被你的咒语击中,扣"<<user[d_user].usual_attack[ws]<<"滴血,剩余"<<monlife-user[d_user].usual_attack[ws]<<"滴血。"<<endl;
monlife-=user[d_user].usual_attack[ws];
}
else if(gj%3==1)
{
cout<<endl<<mname<<"想要躲闪,但还是被你的咒语擦到了,扣"<<user[d_user].usual_attack[ws]/2<<"滴血,剩余"<<monlife-user[d_user].usual_attack[ws]/2<<"滴血。"<<endl;
monlife-=user[d_user].usual_attack[ws]/2;
}
else cout<<endl<<mname<<"及时躲闪,你的咒语打偏了,没有击中。"<<endl;
gj=rand()%20+1;
if(monlife<=0)break;
Sleep(1000);
cout<<endl<<mname<<"反击你,";
if(gj%2==1)
{
cout<<"但是你眼疾手快,躲开了它的攻击。"<<endl;
}
else if(gj%3==0)
{
cout<<"你想要躲闪,但是没来得及,扣了"<<gj<<"滴血,剩余"<<youlife-gj<<"滴血。"<<endl;
youlife-=gj;
}
else
{
cout<<"你躲闪不及,被它击中了,扣"<<gj*3<<"滴血,还剩"<<youlife-gj*3<<"滴血。"<<endl;
youlife-=gj*3;
}
Sleep(1000);
}
if(youlife<=0)
{
cout<<endl<<"你被怪物"<<mname<<"打伤,只好逃走了。"<<endl;
Sleep(1000);
user[d_user].life=0;
system("pause");
system("pause");
system("pause");
return;
}
else
{
cout<<endl<<"怪物"<<mname<<"死了。"<<endl;
Sleep(1000);
int jy=rand()%300+50;
int jb=rand()%5000+1000;
cout<<endl<<"你获得了"<<jy<<"经验,"<<jb<<"金币。"<<endl;
user[d_user].coin+=jb;
user[d_user].experience+=jy;
user[d_user].life=youlife;
system("pause");
system("pause");
system("pause");
return;
}
}
void hit_monster()
{
hithit:
system("cls");
cout<<"-------------------打怪-------------------"<<endl<<endl;
cout<<"0.退出 1.自行选择 2.随机匹配"<<endl<<endl;
cout<<"请选择:";
choose_again:
int choose_what;
cin>>choose_what;
if(choose_what==0)return;
if(choose_what==1&&user[d_user].life>0)
{
cout<<endl;
for(int i=0;i<7;i++)cout<<i+1<<"."<<monster[i]<<" ";
cout<<endl<<endl;
cout<<"请选择(怪物按序号难度递增):";
choose_monster_again:
int choose_monster;
cin>>choose_monster;
if(!(choose_monster>=1&&choose_monster<=7))
{
init_slow_out("输入错误!重新选择:",50);
goto choose_monster_again;
}
else
{
hit(choose_monster);
goto hithit;
}
}
else if(choose_what==2&&user[d_user].life>0)
{
hit(rand()%7+0);
goto hithit;
}
else if(user[d_user].life<=0)
{
cout<<endl;
init_slow_out("你负伤了,需要治疗!",50);
system("pause");
return;
}
else cout<<endl;init_slow_out("输入错误!请重新输入:",50);goto choose_again;
}
void treat()
{
system("cls");
cout<<endl<<"-------------------医疗营-------------------"<<endl;
cout<<endl<<"你需要花费10经验或1000金币恢复100生命值吗?"<<endl;
cout<<endl<<"输入y同意,n取消"<<endl;
choose_treat_again:
char cheat;
cin>>cheat;
if(cheat=='y')
{
if(user[d_user].coin<1000&&user[d_user].experience<10)
{
cout<<endl;
init_slow_out("您的金币和经验不足!",50);
system("pause");
return;
}
else if(user[d_user].coin>=1000)
{
user[d_user].life+=100;
if(user[d_user].life>user[d_user].big_life)
user[d_user].life=user[d_user].big_life;
user[d_user].coin-=1000;
cout<<endl;
init_slow_out("已经花费了1000金币恢复100生命值。",50);
system("pause");
return;
}
else
{
user[d_user].life+=100;
if(user[d_user].life>user[d_user].big_life)
user[d_user].life=user[d_user].big_life;
user[d_user].experience-=10;
cout<<endl;
init_slow_out("已经花费10经验恢复100生命值。",50);
system("pause");
return;
}
}
else if(cheat=='n')return;
else init_slow_out("输入错误!请重新输入:",50);goto choose_treat_again;
}
int money[10]={1000,2000,3000,10000,15000,20000,50000,100000};
int jingyan[10]={100,200,300,1000,1500,2000,5000,10000};
string wandd[10]={"紫衫木魔杖","葡萄木魔杖","榆木魔杖","柏木魔杖","核桃壳魔杖","杉木魔杖","冬青木魔杖","接骨木魔杖"};
void buy_wand_YES(int id)
{
cout<<endl<<"您是使用金币还是经验购买?"<<endl;
cout<<endl<<"使用金币输入1,经验输入2"<<endl;
cout<<endl<<"请输入:";
input:
int chwa;
cin>>chwa;
if(chwa==1)
{
if(user[d_user].coin<money[id-1])
{
cout<<endl;
init_slow_out("您的金币不足!",50);
system("pause");
return;
}
else
{
user[d_user].coin-=money[id-1];
user[d_user].wand=wandd[id-1];
cout<<endl;
init_slow_out("购买成功!",50);
system("pause");
return;
}
}
else if(chwa==2)
{
if(user[d_user].experience<jingyan[id-1])
{
cout<<endl;
init_slow_out("您的经验不足!",50);
system("pause");
return;
}
else
{
user[d_user].experience-=jingyan[id-1];
user[d_user].wand=wandd[id-1];
cout<<endl;
init_slow_out("购买成功!",50);
system("pause");
return;
}
}
else cout<<endl;init_slow_out("输入错误!请重新输入:",50);goto input;
}
void buy_wand()
{
system("cls");
cout<<endl<<"请问你要购买什么魔杖?"<<endl;
cout<<endl<<"1.紫衫木魔杖 1000金币或100经验"<<endl;
cout<<endl<<"2.葡萄木魔杖 2000金币或200经验"<<endl;
cout<<endl<<"3.榆木魔杖 3000金币或500经验"<<endl;
cout<<endl<<"4.柏木魔杖 10000金币或1000经验"<<endl;
cout<<endl<<"5.核桃壳魔杖 15000金币或1500经验"<<endl;
cout<<endl<<"6.杉木魔杖 20000金币或2500经验"<<endl;
cout<<endl<<"7.冬青木魔杖 50000金币或5000经验"<<endl;
cout<<endl<<"8.接骨木魔杖 100000金币或10000经验"<<endl;
cout<<endl<<"0.退出"<<endl;
cout<<endl<<"请选择:";
choose_buy_wand_again:
int chbuwa;
cin>>chbuwa;
if(chbuwa==0)return;
else if(chbuwa>=1&&chbuwa<=8){buy_wand_YES(chbuwa);return;}
else cout<<endl;init_slow_out("输入错误!请重新输入:",50);goto choose_buy_wand_again;
}
string book[10]={"咒语大全","魔法史","医疗的魔法","飞天扫帚护理手册","黑魔法防御术","怪兽的秘密"};
int book_money[10]={2000,3000,5000,10000,15000,20000};
int book_jingyan[10]={200,300,500,1000,1500,2000};
void add(int k)
{
if(k==1)
{
for(int i=0;i<13;i++)user[d_user].usual_attack[i]++;
}
else if(k==2)
{
user[d_user].experience+=500;
}
else if(k==3)
{
user[d_user].big_life+=100;
user[d_user].life=user[d_user].big_life;
}
else if(k==4)
{
user[d_user].speed+=10;
}
else if(k==5)
{
user[d_user].attack+=10;
user[d_user].defense+=10;
user[d_user].speed+=10;
}
else if(k==6)
{
user[d_user].attack+=50;
user[d_user].defense+=50;
user[d_user].speed+=50;
user[d_user].big_life+=100;
user[d_user].life=user[d_user].big_life;
user[d_user].experience+=500;
for(int i=0;i<13;i++)user[d_user].usual_attack[i]+=10;
}
}
void buy_sthbook(int k)
{
cout<<endl<<"请问您是使用金币还是经验购买?"<<endl;
cout<<endl<<"金币输入1,经验输入2"<<endl;
cout<<endl<<"请输入:";
choose_pay_book:
int chpabo;
cin>>chpabo;
if(chpabo!=1&&chpabo!=2)
{
cout<<endl;
init_slow_out("输入错误!请重新输入:",50);
goto choose_pay_book;
}
else if(chpabo==1)
{
if(user[d_user].coin<book_money[k-1])
{
cout<<endl;
init_slow_out("您的金币不足!",50);
system("pause");
return;
}
user[d_user].coin-=book_money[k-1];
int len=user[d_user].bag_len;
user[d_user].bag_len++;
user[d_user].bag[++len]=book[k-1];
cout<<endl;
init_slow_out("购买成功!",50);
add(k);
system("pause");
return;
}
else
{
if(user[d_user].experience<book_jingyan[k-1])
{
cout<<endl;
init_slow_out("您的经验不足!",50);
system("pause");
return;
}
user[d_user].experience-=book_jingyan[k-1];
int len=user[d_user].bag_len;
user[d_user].bag_len++;
user[d_user].bag[++len]=book[k-1];
cout<<endl;
init_slow_out("购买成功!",50);
add(k);
system("pause");
return;
}
}
void buy_book()
{
buybook:
system("cls");
cout<<endl<<"请问您需要购买什么书籍?"<<endl;
cout<<endl<<"1.咒语大全 2000金币或200经验"<<endl;
cout<<endl<<"2.魔法史 3000金币或300经验"<<endl;
cout<<endl<<"3.医疗的魔法 5000金币或500经验"<<endl;
cout<<endl<<"4.飞天扫帚护理手册 10000金币或1000经验"<<endl;
cout<<endl<<"5.黑魔法防御术 15000金币或1500经验"<<endl;
cout<<endl<<"6.怪兽的秘密 20000金币或2500经验"<<endl;
cout<<endl<<"0.退出"<<endl;
cout<<endl<<"请输入:";
choose_buy_book:
int chbubo;
cin>>chbubo;
if(chbubo==0)return;
if(!(chbubo>=1&&chbubo<=6))
{
init_slow_out("输入错误!请重新输入:",50);
goto choose_buy_book;
}
else buy_sthbook(chbubo);return;
}
void jinku_do(int id)
{
system("cls");
cout<<endl<<"欢迎来到"<<id<<"号金库!"<<endl;
cout<<endl<<"1.存入金币 2.取出金币"<<endl;
cout<<endl<<"3.存入经验 4.取出经验"<<endl;
cout<<endl<<"0.退出"<<endl;
cout<<endl<<"请输入您的操作:";
cin_do:
int td;
cin>>td;
if(td==0)return;
if(!(td>=1&&td<=4))
{
cout<<endl;
init_slow_out("输入错误!请重新输入:",50);
goto cin_do;
}
if(td==1)
{
cout<<endl;
init_slow_out("请输入您要存入的金币数量:",50);
cin_cun1:
int a;
cin>>a;
if(user[d_user].coin<a)
{
cout<<endl;
init_slow_out("您没有这么多金币,请重新输入:",50);
goto cin_cun1;
}
user[d_user].coin-=a;
jinku[id].coin+=a;
cout<<endl;
init_slow_out("存入成功!",50);
system("pause");
return;
}
if(td==2)
{
cout<<endl;
init_slow_out("请输入您要取出的金币数量:",50);
cin_cun2:
int a;
cin>>a;
if(jinku[id].coin<a)
{
cout<<endl;
init_slow_out("您没有这么多金币,请重新输入:",50);
goto cin_cun2;
}
user[d_user].coin+=a;
jinku[id].coin-=a;
cout<<endl;
init_slow_out("取出成功!",50);
cout<<endl;
system("pause");
return;
}
if(td==3)
{
init_slow_out("请输入您要存入的经验数量:",50);
cin_cun3:
int a;
cin>>a;
if(user[d_user].experience<a)
{
cout<<endl;
init_slow_out("您没有这么多经验,请重新输入:",50);
goto cin_cun3;
}
user[d_user].experience-=a;
jinku[id].experience+=a;
cout<<endl;
init_slow_out("存入成功!",50);
system("pause");
return;
}
if(td==4)
{
cout<<endl;
init_slow_out("请输入您要取出的经验数量:",50);
cin_cun4:
int a;
cin>>a;
if(jinku[id].experience<a)
{
cout<<endl;
init_slow_out("您没有这么多经验,请重新输入:",50);
goto cin_cun4;
}
user[d_user].experience+=a;
jinku[id].experience-=a;
cout<<endl;
init_slow_out("取出成功!",50);
cout<<endl;
system("pause");
return;
}
}
void look_jinku(int id)
{
system("cls");
cout<<endl<<"这是"<<id<<"号金库"<<endl;
cout<<endl<<"金库密码是"<<jinku[id].password<<endl;
cout<<endl<<"金币:"<<jinku[id].coin<<endl;
cout<<endl<<"经验:"<<jinku[id].experience<<endl;
cout<<endl<<"状态:";
if(jinku[id].flag==true)cout<<"已开通"<<endl<<endl;
else cout<<"未开通"<<endl<<endl;
system("pause");
return;
}
void change(int k)
{
if(k==1)
{
cout<<endl<<"10经验可兑换1000金币"<<endl;
cout<<endl<<"请输入您要用来兑换的经验数量:";
cin_jingyan:
int j;
cin>>j;
if(user[d_user].experience<j)
{
init_slow_out("您的经验不足!请重新输入:",50);
goto cin_jingyan;
}
user[d_user].experience-=j;
user[d_user].coin+=(j/10*1000);
cout<<endl;
init_slow_out("兑换成功!",50);
cout<<endl;
system("pause");
return;
}
else
{
cout<<endl<<"1000金币可兑换10经验"<<endl;
cout<<endl<<"请输入您要用来兑换的金币数量:";
cin_jinbi:
int j;
cin>>j;
if(user[d_user].coin<j)
{
init_slow_out("您的金币不足!请重新输入:",50);
goto cin_jinbi;
}
user[d_user].coin-=j;
user[d_user].experience+=(j/1000*10);
cout<<endl;
init_slow_out("兑换成功!",50);
cout<<endl;
system("pause");
return;
}
}
void gulingge_dosth(int k)
{
if(k==1)
{
cout<<endl;
init_slow_out("请输入您的金库ID:",50);
cin_id:
int id;
cin>>id;
cout<<endl;
init_slow_out("请输入您的金库密码:",50);
cin_mima:
string mima;
cin>>mima;
if(jinku[id].flag==false)
{
cout<<endl;
init_slow_out("这个金库尚未开通!",50);
system("pause");
return;
}
if(jinku[id].password!=mima)
{
cout<<endl;
init_slow_out("密码错误!",50);
system("pause");
return;
}
jinku_do(id);
}
else if(k==2)
{
cout<<endl<<"请问你要兑换什么?"<<endl;
cout<<endl<<"1.金币 2.经验"<<endl;
cout<<endl<<"请输入:";
cin_choose:
int a;
cin>>a;
if(a!=1&&a!=2)
{
cout<<endl;
init_slow_out("输入错误!请重新输入:",50);
goto cin_choose;
}
change(a);
}
else if(k==3)
{
cout<<endl;
init_slow_out("请输入您的金库ID:",50);
ccin_id:
int idd;
cin>>idd;
cout<<endl;
init_slow_out("请输入您的金库密码:",50);
ccin_mima:
string mimaa;
cin>>mimaa;
if(jinku[idd].flag==false)
{
cout<<endl;
init_slow_out("这个金库还没有开通!",50);
system("pause");
return;
}
if(jinku[idd].password!=mimaa)
{
cout<<endl;
init_slow_out("密码错误!",50);
system("pause");
return;
}
if(MessageBox(NULL,("注销后金库内所有财产将会丢失,确定注销吗?"),("注销金库"),MB_YESNO|MB_ICONINFORMATION)==IDYES)
{
jinku[idd].flag=false;
cout<<endl;
init_slow_out("已注销。",50);
cout<<endl;
system("pause");
}
}
else if(k==4)
{
cout<<endl;
init_slow_out("请输入您的金库ID:",50);
cin_ID:
int iid;
cin>>iid;
cout<<endl;
init_slow_out("请输入您的金库密码:",50);
cin_MIMA:
string mmima;
cin>>mmima;
if(jinku[iid].flag==false)
{
cout<<endl;
init_slow_out("这个金库尚未开通!",50);
system("pause");
return;
}
if(jinku[iid].password!=mmima)
{
cout<<endl;
init_slow_out("密码错误!",50);
system("pause");
return;
}
look_jinku(iid);
}
else if(k==5)
{
cout<<endl;
cin_changejinku:
init_slow_out("请输入您的金库ID:",50);
int iD;
cin>>iD;
init_slow_out("请输入您的金库密码:",50);
string Mima;
cin>>Mima;
if(iD==user[d_user].jinkuid&&Mima==jinku[iD].password)
{
cout<<endl;
init_slow_out("请输入您的新密码:",50);
string nMima;
cin>>nMima;
jinku[iD].password=nMima;
cout<<endl;
init_slow_out("修改金库密码成功!",50);
cout<<endl;
system("pause");
}
else
{
cout<<endl;
init_slow_out("金库ID或金库密码输入错误!",50);
system("pause");
return;
}
}
}
void buy_gulingge()
{
system("cls");
cout<<endl<<"欢迎来到古灵阁!"<<endl;
cout<<endl<<"在这里,你可以让我们保管您最珍贵的东西!"<<endl;
cout<<endl<<"0.退出 1.进入自己的金库 2.货币兑换"<<endl;
cout<<endl<<"3.注销金库 4.查看金库情况 5.设置金库密码"<<endl;
cout<<endl<<"请选择:";
choose_gulingge_todo:
int chgudo;
cin>>chgudo;
if(chgudo==0)return;
if(!(chgudo>=1&&chgudo<=5))
{
cout<<endl;
init_slow_out("输入错误!请重新输入:",50);
goto choose_gulingge_todo;
}
else gulingge_dosth(chgudo);return;
}
void buy_sth()
{
buybuy:
system("cls");
cout<<endl<<"-------------------对角巷-------------------"<<endl;
cout<<endl<<"0.退出 1.奥利凡德魔杖店 2.书店 3.古灵阁"<<endl;
cout<<endl<<"请选择:";
choose_buy_again:
int choose_buy;
cin>>choose_buy;
if(choose_buy==0)return;
if(choose_buy==1)
{
buy_wand();
goto buybuy;
}
else if(choose_buy==2)
{
buy_book();
goto buybuy;
}
else if(choose_buy==3)
{
buy_gulingge();
goto buybuy;
}
else cout<<endl;init_slow_out("输入错误!请重新输入:",50);goto choose_buy_again;
}
void look_bag()
{
system("cls");
cout<<endl<<"-------------------背包-------------------"<<endl;
int len=user[d_user].bag_len;
if(!len)
{
cout<<endl;
init_slow_out("背包里空空如也~~~",50);
cout<<endl;
system("pause");
return;
}
for(int i=1;i<=len;i++)
{
cout<<endl<<i<<"."<<user[d_user].bag[i]<<endl;
}
system("pause");
return;
}
void learn_spell(int k)
{
int pull=0;
cout<<endl;
string lesp="正在学习";
if(k>=1&&k<=13)lesp+=spell_usual[k-1],pull=1;
else lesp+=spell_kill[k-14],pull=2;
lesp+="魔咒,请稍后......";
init_slow_out(lesp,50);
Sleep(5500);
cout<<endl;
init_slow_out("学习完成!攻击力和防御力已增强!",50);
cout<<endl;
user[d_user].attack++;
user[d_user].defense++;
if(pull==1)
{
user[d_user].usual_attack[k-1]++;
}
else if(pull==2)
{
user[d_user].kill_attack[k-1]++;
}
system("pause");
}
void learn_medical(int k)
{
if(k==1)
{
cout<<endl;
init_slow_out("正在学习治疗外伤,请稍后......",50);
Sleep(5500);
cout<<endl;
init_slow_out("学习完成!您的血量增加了!",50);
cout<<endl;
user[d_user].life+=10;
if(user[d_user].life>user[d_user].big_life)
user[d_user].life=user[d_user].big_life;
system("pause");
}
else
{
cout<<endl;
init_slow_out("正在学习增加最大血量,请稍后......",50);
Sleep(5500);
cout<<endl;
init_slow_out("学习完成!您的最大血量增加了!",50);
cout<<endl;
user[d_user].big_life+=10;
system("pause");
}
}
void quidditch(int k)
{
cout<<endl;
init_slow_out("正在学习中,请稍后......",50);
Sleep(5500);
cout<<endl;
init_slow_out("学习完成!你的速度提升了!",50);
cout<<endl;
switch(k)
{
case 1:user[d_user].speed+=5;break;
case 2:user[d_user].speed+=10;break;
case 3:user[d_user].speed+=15;break;
case 4:user[d_user].speed+=20;break;
}
system("pause");
}
void study_do(int k)
{
if(k==1)
{
system("cls");
cout<<endl;
init_slow_out("请选择您要学习的咒语:",50);
cout<<endl<<"0.退出"<<endl<<endl;
int scnt;
for(int i=0;i<13;i++)
{
cout<<i+1<<"."<<spell_usual[i]<<" ";
scnt++;
if(scnt==3)
{
cout<<endl<<endl;
scnt=0;
}
}
cout<<endl<<endl;
for(int i=0;i<3;i++)
cout<<i+14<<"."<<spell_kill[i]<<" ";
cout<<endl;
choose_spell:
int chse;
cin>>chse;
if(chse==0)return;
if(!(chse>=1&&chse<=16))
{
init_slow_out("输入错误!请重新输入:",50);
goto choose_spell;
}
learn_spell(chse);
return;
}
else if(k==2)
{
system("cls");
cout<<endl;
init_slow_out("请选择您要学习的治疗类型:",50);
cout<<endl<<"0.退出"<<endl;
cout<<endl<<"1.治疗外伤"<<endl;
cout<<endl<<"2.增加最大血量"<<endl;
choose_medical:
int chme;
cin>>chme;
if(chme==0)return;
if(!(chme>=1&&chme<=2))
{
cout<<endl;
init_slow_out("输入错误!请重新选择:",50);;
goto choose_medical;
}
learn_medical(chme);
return;
}
else
{
system("cls");
cout<<endl;
init_slow_out("请选择你的魁地奇职业:",50);
cout<<endl<<"1.守门员"<<endl;
cout<<endl<<"2.追球手"<<endl;
cout<<endl<<"3.击球手"<<endl;
cout<<endl<<"4.找球手"<<endl;
cout<<endl<<"输入0退出"<<endl;
choose_quidditch:
int chqu;
cin>>chqu;
if(chqu==0)return;
if(!(chqu>=1&&chqu<=4))
{
cout<<endl;
init_slow_out("输入错误!请重新输入:",50);
goto choose_quidditch;
}
quidditch(chqu);
return;
}
}
void study()
{
study_again:
system("cls");
cout<<endl<<"-------------------学习-------------------"<<endl;
cout<<endl<<"0.退出 1.咒语 2.治疗 3.魁地奇"<<endl;
cout<<endl<<"请选择:";
choose_study:
int chst;
cin>>chst;
if(chst==0)return;
if(!(chst>=1&&chst<=3))
{
cout<<endl;
init_slow_out("输入错误!请重新输入:",50);
goto choose_study;
}
study_do(chst);
goto study_again;
}
void init_main()
{
think:
system("cls");
cout<<endl<<"-------------------主界面-------------------"<<endl;
cout<<"-1保存并退出 0.注销 1.个人主页 2.打怪 3.对角巷"<<endl;
cout<<"4.学习 5.医疗营 6.背包"<<endl<<endl;
cout<<"你的操作:";
cin_again:
int wtd;
cin>>wtd;
if(wtd==-1)
{
system("cls");
for(int i=1;i<=10;i++)
{
init_slow_out("正在存档,请稍后..........",50);
system("cls");
}
sign_out();
MessageBox(NULL,("已经安全的存档并退出。"),("退出游戏"),MB_OK);
exit(0);
}
else if(wtd==0)
{
if(MessageBox(NULL,("你确定吗?"),("注销用户"),MB_YESNO|MB_ICONINFORMATION)==IDYES)
{
user[d_user].flag=false;
cout<<endl;
init_slow_out("已注销。",50);
system("pause");
system("cls");
init_slow_out("欢迎来到哈利波特魔法游戏",100);
init_begin();
cin.clear();
cout.clear();
goto think;
}
else goto think;
}
else if(wtd==1)
{
cout_user_thing();
goto think;
}
else if(wtd==2)
{
if(user[d_user].life==0)
{
cout<<endl;
init_slow_out("你负伤了,需要治疗,不能打怪!",50);
system("pause");
goto think;
}
else hit_monster();
goto think;
}
else if(wtd==3)
{
buy_sth();
goto think;
}
else if(wtd==4)
{
study();
goto think;
}
else if(wtd==5)
{
treat();
goto think;
}
else if(wtd==6)
{
look_bag();
goto think;
}
else cout<<endl;init_slow_out("输入错误!请重新输入:",50);goto cin_again;
}
int main()
{
jinku[0].flag=true;
jinku[0].password="123698745qwertyuiop";
jinku[0].coin=999999999;
jinku[0].experience=999999999;
srand(time(0));
init_slow_out("欢迎来到哈利波特魔法游戏",100);
init_begin();
cin.clear();
cout.clear();
init_main();
return 0;
}
后记
存档功能特别鸣谢两位帮助我的大佬:lyc和xht。
后期会更新哦!关注我吧球球了!
最后,点个赞吧!