背景

最近自学动态规划和图论,真的很难,所以想放松一下,用了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。

后期会更新哦!关注我吧球球了!

最后,点个赞吧!

哈利波特魔法游戏(原创)相关推荐

  1. 哈利波特魔法觉醒Mac端(卡牌角色扮演游戏)

    每个人都有一个魔法梦,近日沉寂多年的霍格沃茨魔法学院,已经恢复招生了!哈利波特:魔法觉醒 for Mac是由<哈利·波特>官方授权的一款卡牌类角色扮演演戏!哈利波特魔法觉醒mac游戏共分为 ...

  2. 哈利波特:魔法觉醒游戏多开器

    ​ downloadUrl = 'http://www.sskgame.com/forum.php?mod=viewthread&tid=344&extra=page%3D1'titl ...

  3. 哈利波特魔法觉醒火盾护身卡组推荐 火盾护身如何搭配

    最近大火的卡牌游戏哈利波特魔法觉醒最近又上新传奇卡了,而它就是火盾护身,但很多玩家不知道火盾护身卡牌如何搭配卡组,下面来看看"哈利波特魔法觉醒火盾护身卡组推荐"吧. 哈利波特魔法觉 ...

  4. 哈利波特魔法觉醒把戏坊烟花盒怎么用

    哈利波特魔法觉醒把戏坊烟花盒怎么用,很多的玩家对于这个问题是比较的关心,毕竟很多的玩家也还是没有接触这个道具,对此想要知道哈利波特魔法觉醒把戏坊烟花盒怎么用,下面就给大家带来详细介绍. 哈利波特魔法觉 ...

  5. 哈利波特魔法觉醒冬青心愿怎么玩

    哈利波特魔法觉醒冬青心愿怎么玩,游戏也是将在12月22日上线冬季活动"冬青心愿",那么这个活动又应该怎么玩呢,相信还有些小伙伴不清楚.所以下面就为大家带来了冬青心愿的玩法介绍! 哈 ...

  6. 【哈利波特·魔法觉醒】手记全攻略

    哈利波特·魔法觉醒 手记全攻略 保姆全攻略 哈利波特手记 1 寻访马人 1.1 线路一(一星) 1.2 线路二(非一星) 1.3 线路三(非一星) 1.4 线路四(非一星) 2 追寻独角兽 2.1 线 ...

  7. 哈利波特AR游戏-巫师联盟 深度解析

    今年AR技术的进展,及相关应用值得我们关注.给大家推荐一个AR游戏,应该会超越Pokemon Go. [  哈利波特:巫师联盟  ] 这一天可能是魔法世界最重要的一天 AR游戏<哈利·波特:巫师 ...

  8. 创造与魔法游戏最新的服务器,创造与魔法MOD服务器

    创造与魔法MOD服务器怎么样?不妨来18183游戏库下载试试! 创造与魔法MOD服务器是款国产生存冒险类游戏,游戏中你需要在荒岛上使用神奇的魔法创造新的人类文明.自由建造房屋.城池.城邦甚至国家,创造 ...

  9. 创造与魔法游戏服务器无限金币,创造与魔法无限金币版

    创造与魔法无限金币版是一款可以改造环境,自由建造房屋.城池.城邦甚至国家,同时还能探险,交友.副本.换装的高自由生存手游.玩家可以在沙漠.丛林.草原.海滩等多种不同环境降生,探索上古遗迹的时候,甚至还 ...

最新文章

  1. python3 分割函数 partition rpartition 函数
  2. 反弹木马——本质上就是一个开80端口的CS程序,伪造自己在浏览网页
  3. UPX脱壳全程分析(转)
  4. Ubuntu 16设置固定IP和DNS
  5. 时间转换竟多出1年!Java开发中的20个坑你遇到过几个?
  6. python配置文件转dict
  7. python车牌字符分割_OpenCV+Python识别车牌和字符分割的实现
  8. BZOJ1076: [SCOI2008]奖励关【状压DP+期望DP】
  9. 三层vxlan原理_【老衲推荐】VXLAN技术在园区网的应用探讨
  10. Linux服务器网卡驱动安装及故障排除
  11. python按顺序执行函数_Python3的unittest用例按编写顺序执行
  12. 智能机器人建房子后房价走势_重磅!机器人建房时代将至,工作效率是人的4倍,有助房价下跌?...
  13. 13个最狂帅炫酷的前沿科技研究项目
  14. ROS PGM格式文件详解 | 九七的ROS
  15. 为什么普遍自学能力不足
  16. python交互式和文件式区别_Python 运行.py文件和交互式运行代码的区别详解
  17. WPS使用,实现用WPS打开在线文档并且进行编辑
  18. [廖雪峰python教程切片练习题]利用切片操作,实现一个trim()函数,去除字符串首尾的空格,注意不要调用str的strip()方法。
  19. 顺丰快递单号批量提取
  20. [Albert 朗读行动记录贴]采纳Scalers方法:口语成长行动

热门文章

  1. Flink on yarn Container released on a *lost* node
  2. 中国的美女为什么这样少的原因
  3. 清茶一杯-手机、电子阅读器和生活
  4. 当你压力大到快崩溃时,不要跟任何人说,也不要觉得委屈
  5. 软件测试学习资料大全
  6. Resultful接口实现后端文件下载
  7. 文本编辑器Notepad++ 官方下载地址
  8. 6.7 【实例】窗口查看器
  9. 端系统及其两种通信方式
  10. textview中划线效果