易帆小游戏
·once·
·
·
个人记录
//转自:https://www.luogu.com.cn/paste/8lays4g2
#include<bits/stdc++.h>
#include<conio.h>
#include<windows.h>
#define endl '\n'
using namespace std;
struct bigint
{
vector<int>a;
bigint(int x=0)
{
do
{
a.push_back(x%10);
x/=10;
}while(x);
}
int &operator[](int i)
{
return a[i];
}
int &operator()(string c)
{
do
{
a.push_back(c[c.size()-1]-48);
c.erase(c.size()-1,1);
}while(c.size());
}
void flatten(int l)
{
a.resize(l+1);
for(int i=0;i<l;i++)
a[i+1]+=a[i]/10,a[i]%=10;
while(!a[a.size()-1])a.pop_back();
if(a.size()==0)a.push_back(0);
}
void unflatten(int l)
{
for(int i=0;i<l-1;i++)
if(a[i]<0)a[i]+=10,a[i+1]--;
while(!a[a.size()-1])a.pop_back();
if(a.size()==0)a.push_back(0);
}
void print()
{
for(int i=max(0,int(a.size()-1));i>=0;i--)
cout<<a[i];
}
};
bool operator==(bigint a,bigint b)
{
if(a.a.size()!=b.a.size())return 0;
for(int i=a.a.size()-1;i>=0;i--)
if(a[i]!=b[i])return 0;
return 1;
}
bool operator<(bigint a,bigint b)
{
if(a==b)return 0;
if(a[a.a.size()-1]<0)
{
if(b[b.a.size()>=0])return 1;
else
{
if(a.a.size()<b.a.size())return 0;
if(a.a.size()>b.a.size())return 1;
for(int i=a.a.size()-1;i>=0;i--)
if(b[i]<a[i])return 1;
else if(b[i]>a[i])return 0;
}
}
else
{
if(a.a.size()<b.a.size())return 1;
if(a.a.size()>b.a.size())return 0;
for(int i=a.a.size()-1;i>=0;i--)
if(a[i]<b[i])return 1;
else if(a[i]>b[i])return 0;
}
}
bool operator<=(bigint a,bigint b)
{
if(a<b||a==b)return 1;
else return 0;
}
bool operator>(bigint a,bigint b)
{
if(a<=b)return 0;
else return 1;
}
bool operator>=(bigint a,bigint b)
{
if(a>b||a==b)return 1;
else return 0;
}
bigint operator+(bigint a,bigint b)
{
int size=max(a.a.size(),b.a.size());
b.a.resize(size);
a.a.resize(size);
for(int i=0;i<size;i++)
a[i]+=b[i];
a.flatten(size+1);
return a;
}
bigint operator-(bigint a,bigint b)
{
bool test=0;
int size=max(a.a.size(),b.a.size());
b.a.resize(size);
a.a.resize(size);
if(a==b)return 0;
if(a<b)
{
bigint c=a;a=b;b=c;test=1;
}
for(int i=size-1;i>=0;i--)
a[i]-=b[i];
a.unflatten(size);
if(test)a[a.a.size()-1]=-a[a.a.size()-1];
return a;
}
bigint operator/(bigint &a,int b)
{
bigint c;
b=int(log10(b));
c.a.resize(a.a.size()-b);
for(int i=a.a.size()-1;i>=b;i--)
c[i-b]=a[i];
while(a.a.size()>b)a.a.pop_back();
while(!a[a.a.size()-1]&&a.a.size()>1)a.a.pop_back();
return c;
}
bigint operator*(bigint a,int b)
{
bigint c;
int len=a.a.size();
c.a.resize(len+11);
for(int i=0;i<len;i++)
c[i]=a[i]*b;
c.flatten(len+int(log10(b))+1);
return c;
}
bigint coin(0),val(1000),atk1(10),def1(3);
int x,atk2=0,def2=0,haoyun=0,t;//初始化
struct xxx{
int gongji,jianshang,jiaxue;
}chongwu;
struct xxxx{
bigint gongji,fangyu,xue,coin;
}zuo,you;
int main()
{
SetConsoleTitle("易帆小游戏");//控制标题
srand(time(0));
cout<<"2021年某一天,你很累,刚刚躺下床,突然发现....我在哪里?"<<endl<<endl;
cout<<"请问您干什么?0、掐自己一下 1、走动看看 "<<endl<<endl;
x=getch()-48;
while(x!=1&&x!=0)cout<<"输入错误,请重新输入0或者1"<<endl<<endl,x=getch()-48;
if(x==0){cout<<"哎哟,好疼....你醒了!游戏全部结束";Sleep(2000);return 0;}
while(1)
{system("cls");//清屏
cout<<"温馨提示:当前你拥有金币";coin.print();cout<<"元,拥有生命值";val.print();cout<<",攻击力";atk1.print();cout<<"+"<<atk2<<"=";(atk1+atk2).print();cout<<",防御力";def1.print();cout<<"+"<<def2<<"=";(def1+def2).print();cout<<"!"<<endl;
cout<<"宠物攻击力"<<chongwu.gongji<<" 宠物减伤"<<chongwu.jianshang<<" 宠物加血"<<chongwu.jiaxue<<endl<<endl;
cout<<"你看见四周些建筑,有矿场,有武器防御店,有药店,有宠物店,一条未知的路"<<endl<<endl;
cout<<"请问你要去哪里?1、矿场 2、武器防御店 3、药店 4、宠物店 5、强化武器防御 6、向前走走(危险) 7、呼叫CCF"<<endl<<endl;
x=getch()-48; while(x<1||x>7)x=getch()-48;
switch(x)
{case 1:
cout<<"请问你要干什么?1、打工挖金矿,3000一个月 2、金矿附近逛逛 3、离开"<<endl<<endl;
x=getch()-48; while(x<1||x>3)x=getch()-48;
if(x==1)
{cout<<"你正在挖矿,持续一个月"<<endl<<endl;
coin=coin+3000;
Sleep(1000);cout<<"十天后...";
Sleep(1000);cout<<"二十天后...";
Sleep(1000);cout<<"三十天后...";
if(rand()%10>=9) {coin=coin+10000;cout<<"悄悄偷了10000金币!";}
if(rand()%100>=99&&atk1+atk2<=200){cout<<"你遇到一群强盗!人被打晕!金币全被抢走!"<<endl<<endl<<endl<<endl;coin=0;}
cout<<"你现在拥有金币";coin.print();cout<<"元"<<endl<<endl;
Sleep(1000);
}
if(x==2)
{cout<<"你在散步....按任意键结束散步"<<endl;
while(1)
{Sleep(2000);
int m=rand()%1000;
coin=coin+m;
cout<<"你捡到"<<m<<"金币,窃喜........当前拥有";coin.print();cout<<"金币"<<endl;
if(rand()%1000>=900&&atk1+atk2<=200){cout<<"你遇到一群强盗!人被打晕!金币全被抢走!"<<endl<<endl<<endl<<endl<<endl;coin=0;}
if(kbhit())break;
}
}
if(x==3) break;
break;
case 2:
cout<<"欢迎来到易帆武器防御店,请问有什么需要?我们这里可以购买1、破旧小刀1000 2、极品大刀30000 3、神秘破铁10000000"<<endl;
cout<<"4、破旧衣服1000 5、极品衣服30000 6、神秘布料10000000 7、离开武器防御店"<<endl<<endl;
while(1)
{x=getch()-48; while(x<1||x>7)x=getch()-48;
if(x==1){if(coin>=1000){coin=coin-1000;atk2=10;cout<<"购买破旧小刀成功!还剩";coin.print();cout<<"元,攻击力加10,当前攻击";(atk1+atk2).print();cout<<endl<<endl;}
else {cout<<"购买失败!您只有";coin.print();cout<<"元钱了"<<endl<<endl; }
}
if(x==2){if(coin>=30000){coin=coin-30000;atk2=100;cout<<"购买极品大刀成功!还剩";coin.print();cout<<"元,攻击力加100,当前攻击";(atk1+atk2).print();cout<<endl<<endl;}
else {cout<<"购买失败!您只有";coin.print();cout<<"元钱了"<<endl<<endl; }
}
if(x==3){if(coin>=10000000){coin=coin-10000000;atk2=5;cout<<"购买神秘破铁成功!还剩";coin.print();cout<<"元,攻击力加5,当前攻击";(atk1+atk2).print();cout<<endl<<endl;}
else {cout<<"购买失败!您只有";coin.print();cout<<"元钱了"<<endl<<endl; }
}
if(x==4){if(coin>=1000){coin=coin-1000;def2=10;cout<<"购买破旧衣服成功!还剩";coin.print();cout<<"元,防御力加10,当前防御";(def1+def2).print();cout<<endl<<endl;}
else {cout<<"购买失败!您只有";coin.print();cout<<"元钱了"<<endl<<endl; }
}
if(x==5){if(coin>=30000){coin=coin-30000;def2=100;cout<<"购买极品衣服成功!还剩";coin.print();cout<<"元,防御力加100,当前防御";(def1+def2).print();cout<<endl<<endl;}
else {cout<<"购买失败!您只有";coin.print();cout<<"元钱了"<<endl<<endl; }
}
if(x==6){if(coin>=10000000){coin=coin-10000000;def2=5;cout<<"购买神秘布料成功!还剩";coin.print();cout<<"元,防御力加5,当前防御";(def1+def2).print();cout<<endl<<endl;}
else {cout<<"购买失败!您只有";coin.print();cout<<"元钱了"<<endl<<endl; }
}
if(x==7)break;
}
cout<<"欢迎下次光临易帆武器防御店!!!";
break;
case 3:
cout<<"欢迎来到易帆药店,请问有什么需要?\n1、加血\n2、加攻击力\n3、加防御力\n4、好运来\n5、退出\n\n";
while(1)
{x=getch()-48; while(x<1||x>7)x=getch()-48;
if(x==1){if(coin>=100){val=val+(coin/100);cout<<"购买生命成功!还剩";coin.print();cout<<"元,当前生命";val.print();cout<<endl<<endl;}
else {cout<<"购买失败!您只有";coin.print();cout<<"元钱了"<<endl<<endl; }
}
if(x==2){if(coin>=10000){atk1=atk1+(coin/10000);cout<<"购买攻击强化药水成功!还剩";coin.print();cout<<"元,当前攻击";(atk1+atk2).print();cout<<endl<<endl;}
else {cout<<"购买失败!您只有";coin.print();cout<<"元钱了"<<endl<<endl; }
}
if(x==3){if(coin>=10000){def1=def1+(coin/10000);cout<<"购买防御强化药水成功!还剩";coin.print();cout<<"元,当前防御";(def1+def2).print();cout<<endl<<endl;}
else {cout<<"购买失败!您只有";coin.print();cout<<"元钱了"<<endl<<endl; }
}
if(x==4){if(coin>=1000000){coin=coin-1000000;haoyun=1;cout<<"好运来!祝你好运来!\n现在还剩";coin.print();cout<<"元,好运即将到来!"<<endl<<endl;}
else {cout<<"购买失败!您只有";coin.print();cout<<"元钱了"<<endl<<endl; }
}
if(x==5)break;
}
cout<<"欢迎下次光临易帆药水店!!!";
break;
case 4:
cout<<"欢迎来到易帆宠物店,请问需要什么样的宠物?我们这里有1、只会卖萌的宠物1000,攻击1,减伤1,加血1。 2、帮你打怪的宠物100000,攻击100 3、帮你扛伤害的宠物100000,减伤100 ";
cout<<" 4、给你打怪回血的宠物100000,加血10 5、极品宠物1000000,攻击50,减伤50,加血5 6、神宠蛋10000000,未知 7、离开宠物店"<<endl<<endl;
while(1)
{x=getch()-48; while(x<1||x>7)x=getch()-48;
if(x==1){if(coin>=1000){coin=coin-1000;cout<<"购买只会卖萌的宠物成功!还剩";coin.print();cout<<"元"<<endl<<endl;chongwu.gongji=1;chongwu.jianshang=1;chongwu.jiaxue=1;}
else {cout<<"购买失败!您只有";coin.print();cout<<"元钱了"<<endl<<endl; }
}
if(x==2){if(coin>=100000){coin=coin-100000;cout<<"购买帮你打怪的宠物成功!还剩";coin.print();cout<<"元"<<endl<<endl;chongwu.gongji=100;chongwu.jianshang=0;chongwu.jiaxue=0;}
else {cout<<"购买失败!您只有";coin.print();cout<<"元钱了"<<endl<<endl; }
}
if(x==3){if(coin>=100000){coin=coin-100000;cout<<"购买帮你扛伤害的宠物成功!还剩";coin.print();cout<<"元"<<endl<<endl;chongwu.gongji=0;chongwu.jianshang=100;chongwu.jiaxue=0;}
else {cout<<"购买失败!您只有";coin.print();cout<<"元钱了"<<endl<<endl; }
}
if(x==4){if(coin>=100000){coin=coin-100000;cout<<"购买给你打怪回血的宠物成功!还剩";coin.print();cout<<"元"<<endl<<endl;chongwu.gongji=0;chongwu.jianshang=0;chongwu.jiaxue=10;}
else {cout<<"购买失败!您只有";coin.print();cout<<"元钱了"<<endl<<endl; }
}
if(x==5){if(coin>=1000000){coin=coin-1000000;cout<<"购买极品宠物成功!还剩";coin.print();cout<<"元"<<endl<<endl;chongwu.gongji=50;chongwu.jianshang=50;chongwu.jiaxue=10;}
else {cout<<"购买失败!您只有";coin.print();cout<<"元钱了"<<endl<<endl; }
}
if(x==6){if(coin>=10000000){coin=coin-10000000;cout<<"购买神宠蛋成功!还剩";coin.print();cout<<"元"<<endl<<endl;chongwu.gongji=0;chongwu.jianshang=0;chongwu.jiaxue=5;}
else {cout<<"购买失败!您只有";coin.print();cout<<"元钱了"<<endl<<endl; }
}
if(x==7)break;
}
cout<<"欢迎下次光临易帆宠物店!!!";
break;
case 5:
cout<<"欢迎来到易帆武器防御强化店!请问您需要强化什么?1、武器 2、衣服 3、离开" <<endl;
while(1)
{x=getch()-48; while(x<1||x>3)x=getch()-48;
if(x==1)
{int k=atk2%10;
cout<<endl<<"强化第"<<k+1<<"级武器,成功率"<<90-10*k<<"%,费用"<<k*k*k*1000<<"金币,强化成功武器攻击力加10%到20%!"<<endl;
if(coin>=(k*k*k*1000))coin=coin-(k*k*k*1000);
else {cout<<"强化不成功!您只有";coin.print();cout<<"元钱了"<<endl<<endl;Sleep(2000);break;}
if(rand()%10>k){atk2=atk2*12/100*10+k+1;cout<<"恭喜你强化成功,当前金币";coin.print();cout<<"。当前攻击力为";(atk1+atk2).print();cout<<endl;}
else {cout<<"*_*你强化失败,当前金币";coin.print();cout<<"。当前攻击力为";(atk1+atk2).print();cout<<endl;}
}
if(x==2)
{int k=def2%10;
cout<<endl<<"强化第"<<k+1<<"级衣服,成功率"<<90-10*k<<"%,费用"<<k*k*k*1000<<"金币,强化成功衣服防御力加10%到20%!"<<endl;
if(coin>=(k*k*k*1000))coin=coin-(k*k*k*1000);
else {cout<<"强化不成功!您只有";coin.print();cout<<"元钱了"<<endl<<endl;Sleep(2000);break;}
if(rand()%10>k){def2=def2*12/100*10+k+1;cout<<"恭喜你强化成功,当前金币";coin.print();cout<<"。当前防御力为";(def1+def2).print();cout<<endl;}
else {cout<<"*_*你强化失败,当前金币";coin.print();cout<<"。当前防御力为";(def1+def2).print();cout<<endl;}
}
if(x==3)break;
}
cout<<"欢迎下次光临易帆武器防御强化店!!!";
break;
case 6:
t=1;
while(1)
{system("cls");
cout<<"温馨提示:当前你拥有金币";coin.print();cout<<"元,拥有生命值";val.print();cout<<",攻击力";atk1.print();cout<<"+"<<atk2<<"=";(atk1+atk2).print();cout<<",防御力";def1.print();cout<<"+"<<def2<<"=";(def1+def2).print();cout<<"!"<<endl;
cout<<"宠物攻击力"<<chongwu.gongji<<" 宠物减伤"<<chongwu.jianshang<<" 宠物加血"<<chongwu.jiaxue<<endl<<endl;
int key=0;
zuo.gongji=rand()%10*t;
zuo.gongji=zuo.gongji*t;
zuo.gongji=zuo.gongji*t+10;
you.gongji=rand()%10*t;
you.gongji=you.gongji*t;
you.gongji=you.gongji*t+10;
zuo.fangyu=rand()%10*t;
zuo.fangyu=zuo.fangyu*t+1;
you.fangyu=rand()%10*t;
you.fangyu=you.fangyu*t+1;
zuo.xue=rand()%100*t;
zuo.xue=zuo.xue*t;
zuo.xue=zuo.xue*t+10;
you.xue=rand()%100*t;
you.xue=you.xue*t;
you.xue=you.xue*t+10;
zuo.coin=rand()%1000*t;
zuo.coin=zuo.coin*t;
zuo.coin=zuo.coin*t;
zuo.coin=zuo.coin*t+5000;
you.coin=rand()%1000*t;
you.coin=you.gongji*t;
you.coin=you.coin*t;
you.coin=you.coin*t+5000;
cout<<"第"<<t<<"波未知生物属性:"<<endl;
cout<<"左边生物攻击";zuo.gongji.print();cout<<"、防御";zuo.fangyu.print();cout<<"、血量";zuo.xue.print();cout<<"、奖励金币为";zuo.coin.print();cout<<endl;
cout<<"右边生物攻击";you.gongji.print();cout<<"、防御";you.fangyu.print();cout<<"、血量";you.xue.print();cout<<"、奖励金币为";you.coin.print();cout<<endl;
cout<<"你想要?1、攻击1号生物 2、攻击2号生物 3、救命符逃跑-3000金币 (温馨提示:打斗过程中打不赢及时按3键逃跑,死亡金币全部丢失,好运丢失)"<<endl<<endl;
x=getch()-48; while(x<1||x>5)x=getch()-48;
if(x==1){
cout<<"进入战斗模式"<<endl;
bigint shanghai1,shanghai2;
if(atk1+atk2+chongwu.gongji>zuo.fangyu)shanghai1=atk1+atk2+chongwu.gongji-zuo.fangyu;
else shanghai1=0;
if(zuo.gongji>def1+def2+chongwu.jianshang)shanghai2=zuo.gongji-def1-def2-chongwu.jianshang;
else shanghai2=1;
while(1)
{zuo.xue=zuo.xue-shanghai1;
cout<<"你攻击了怪物,怪物丢失";shanghai1.print();cout<<"血量,剩余";zuo.xue.print();cout<<endl;
if(zuo.xue<=0){cout<<"恭喜你战胜怪物!你得到";zuo.coin.print();cout<<"金币!"<<endl;coin=coin+zuo.coin;break;}
val=val-shanghai2+chongwu.jiaxue;
cout<<"怪物攻击了你,你丢失";shanghai2.print();cout<<"血量,但同时宠物给你增加了"<<chongwu.jiaxue<<"血量,你剩余";val.print();cout<<endl;
if(val<=0){cout<<"你挂掉了!!!"<<endl<<"你将会丢失所有金钱,并失去好运状态!100天后复生"<<endl<<"请等待"<<endl;coin=0;haoyun=0;val=1;key=1;Sleep(10000);break;}
Sleep(400);
if(kbhit())break;
}
if(key==1)break;
}
if(x==2)
{
cout<<"进入战斗模式"<<endl;
bigint shanghai1(0),shanghai2(0);
if(atk1+atk2+chongwu.gongji>you.fangyu)shanghai1=atk1+atk2+chongwu.gongji-you.fangyu;
else shanghai1=0;
if(you.gongji>def1+def2+chongwu.jianshang)shanghai2=you.gongji-def1-def2-chongwu.jianshang;
else shanghai2=1;
while(1)
{you.xue=you.xue-shanghai1;
cout<<"你攻击了怪物,怪物丢失";shanghai1.print();cout<<"血量,剩余";you.xue.print();cout<<endl;
if(you.xue<=0){cout<<"恭喜你战胜怪物!你得到";you.coin.print();cout<<"金币!"<<endl;coin=coin+you.coin;break;}
val=val-shanghai2+chongwu.jiaxue;
cout<<"怪物攻击了你,你丢失";shanghai2.print();cout<<"血量,但同时宠物给你增加了"<<chongwu.jiaxue<<"血量,你剩余";val.print();cout<<endl;
if(val<=0){cout<<"你挂掉了!!!"<<endl<<"你将会丢失所有金钱,并失去好运状态!100天后复生"<<endl<<"请等待"<<endl;coin=0;haoyun=0;val=1;key=1;Sleep(10000);break;}
Sleep(400);
if(kbhit())break;
}
if(key==1)break;
}
if(x==3){coin=coin-3000;break;}
t++;
if(t%5==0&&haoyun==1&&coin<1000000)cout<<endl<<"因为钱不够,我好像错过了天大机缘"<<endl<<endl;
if(t%5==0&&haoyun==1&&coin>=1000000)
{cout<<endl<<"恭喜你遇到神秘商店,这里可以1、加工混沌破铁1000000 2、加工混沌金丝银线1000000 3、孵化神兽蛋1000000 4、离开"<<endl<<endl;
bool flag = 0;
int w = 0;
x=getch()-48; while(x<1||x>4)x=getch()-48;
if(x==1){coin=coin-1000000;if(atk2==5){atk2=10000;}else{w++;}flag=1;}
if(x==2){coin=coin-1000000;if(def2==5){def2=10000;}else{w++;}flag=1;}
if(x==3){coin=coin-1000000;if(chongwu.jiaxue==5){chongwu.gongji=1000;chongwu.jianshang=1000;chongwu.jiaxue=20;}else{w++;}flag=1;}
haoyun=haoyun-flag;
coin=coin+w*1000000;
}
}
break;
case 7:
cout<<"我是CCF,请问有什么可以帮你?1、保存游戏并关闭游戏 2、载入游戏 3、返回游戏 "<<endl<<endl;
x=getch()-48; while(x<1||x>3)x=getch()-48;
if(x==1) {cout<<"保存游戏成功!1秒后关闭游戏!"<<endl;
freopen("C:/Users/Public/Documents/system.dll","w",stdout);
coin.print();
cout<<" ";
val.print();
cout<<" ";
atk1.print();
cout<<" "<<atk2<<" ";
def1.print();
cout<<" "<<def2<<" ";
cout<<haoyun<<" ";
cout<<chongwu.gongji<<" ";
cout<<chongwu.jianshang<<" ";
cout<<chongwu.jiaxue;
Sleep(1000);
return 0;
}
if(x==2) {freopen("C:/Users/Public/Documents/system.dll","r",stdin);
string stringg;
coin.a.clear();
val.a.clear();
atk1.a.clear();
def1.a.clear();
cin>>stringg;
coin(stringg);
cin>>stringg;
val(stringg);
cin>>stringg;
atk1(stringg);
cin>>atk2;
cin>>stringg;
def1(stringg);
cin>>def2;
cin>>haoyun;
cin>>chongwu.gongji;
cin>>chongwu.jianshang;
cin>>chongwu.jiaxue;
fclose(stdin);
cout<<"载入游戏成功!"<<endl;Sleep(1000);
}
if(x==3)break;
}
while(kbhit())getch();
}
}