#include<bits/stdc++.h>
#include<windows.h>
#define int long long
#define KEY_DOWN(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000) ? 1 : 0)
using namespace std;
mt19937 ran(time(0));
/*辅助变量区:
没事别动*/
int flag=0,flag2=0,tuiflag,juanflag,xueflag,flagfs,zkflag,jiyuflag;
int fangsiz,dongsiz,mingsiz,xingsiz,fucisiz,liansiz;
int dengdai=100,dadeng=200,shijiandeng=300;
int yudengdai=0,yudadeng=0,yushijiandeng=300;
int chushixintai=10;
int dai[100000],pai[100000],juan[100000],nai[100000],xintai[100000],tui[100000],si[100000],xueli[100000],jiyu[100000],nxt,level=0,siren=0,zhuyi[100000],mxxl=0;
string xuel[100100]={"初中","高中","大学","硕士","博士","搬砖","扔砖","造砖","搬人","扔人","造人","搬 UKE","扔 UKE","造 UKE","和 UKE 造人","养殖 UKE","将 UKE 变现","买卖 UKE","被 UKE 搬","被 UKE 扔","被 UKE 造","被 UKE 养殖","被 UKE 变现","被 UKE 买卖","【数据删除】","【数据删除】","【数据删除】","【数据删除】","【数据删除】","【数据删除】","【数据删除】"};
int Fen[100100]={1,100,250,500,1000,2000,4000,8000,10000,20000,40000,80000,100000,200000,400000,800000,1000000,2000000,4000000};
/*词库区:
1. 要添加词直接在数组中补充
2. 特殊的,如果名词和形容词中都有“我们”,则名词库中的“我们”应放在第一个*/
string fang[]={"女厕所","童话","传说","原神","机房","卧室","厕所","餐桌","丁子博","破中学","阿里巴巴","天安门","热带雨林","考场"};//地点
string dong[]={"穿上","闯入","斗败","开动","斗败","杀死","进入","变成","盯着","歌颂","奴役"};//动词
string ming[]={"我们","蓝精灵","格格巫","老太婆","比基尼","王一乐","丁子博","肖子卓","键盘","丁一宸","奶龙","张培楠","傻鸟","跳跳哥","张轩程","李君泽"};//名词
string xing[]={"我们","招笑","可爱的","没母的","美味的","狗日的","匮乏的","爆炸的","稀有的","甘甜的","匆忙的","努力的","唐氏"};//形容词
string fuci[]={"自由自在地","善良勇敢地","齐心合力","活蹦乱跳地","来回摇摆地","狼心狗肺地","反复不停地","大快人心地","一不小心","开着小米苏7","忍不住","用力"};//副词
string yuan[100000];
/*随机抽词函数区:
核心部分!*/
string sdi(){
return fang[ran()%fangsiz];
}
string sdo(){
return dong[ran()%dongsiz];
}
string sxi(){
flag2=0;
int t=ran()%xingsiz;
if(t==0) flag2=1;
return xing[t];
}
string sfu(){
return fuci[ran()%fucisiz];
}
string smi();
void szh(int no){
if(!(ran()%no)){
cout<<sxi();
Sleep(dengdai);
}
cout<<smi();
Sleep(dengdai);
}
void swe(int no){
flag=1;
if(!(ran()%no)){
cout<<"像"<<smi()<<"似的";
Sleep(dengdai);
if(!(ran()%2)){
flag=0;
return;
}
}
if(!(ran()%no)){
cout<<"进入"<<sdi()<<"中";
Sleep(dengdai);
if(!(ran()%2)){
flag=0;
return;
}
}
if(!(ran()%no)){
cout<<sfu();
Sleep(dengdai);
}
cout<<sdo();
Sleep(dengdai);
}
void sbi(int no){
if(!(ran()%no)){
cout<<sxi();
Sleep(dengdai);
}
cout<<smi();
Sleep(dengdai);
}
string smi(){
if(jiyuflag){
jiyuflag=0;
int x=ran()%mingsiz;
while(ming[x]=="尸体"){
x=ran()%mingsiz;
}
int y=ran()%mingsiz;
while(ming[y]=="尸体"||y==x){
y=ran()%mingsiz;
}
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED);
cout<<yuan[y]<<"决定在"<<sdi()<<"盗取点"<<yuan[x]<<"的东西!\n";
Sleep(shijiandeng);
int xX=ran()%8+1,lidu=0,xx=0,yy=0;
string t1;
if(xX==1){
if(dai[x]==0) lidu=0;
else lidu=ran()%dai[x]+1;
dai[x]-=lidu;xx=dai[x];
dai[y]+=lidu;yy=dai[y];
t1="次带动风气";
int t=lidu;
lidu*=3;
jiyu[x]+=lidu*2;
jiyu[y]-=lidu;
lidu=t;
}
if(xX==2){
if(juan[x]==0) lidu=0;
else lidu=ran()%juan[x]+1;
juan[x]-=lidu;xx=juan[x];
juan[y]+=lidu;yy=juan[y];
t1="点学业";
int t=lidu;
lidu*=2;
jiyu[x]+=lidu*2;
jiyu[y]-=lidu;
lidu=t;
}
if(xX==3){
if(nai[x]==0) lidu=0;
else lidu=ran()%nai[x]+1;
nai[x]-=lidu;xx=nai[x];
nai[y]+=lidu;yy=nai[y];
t1="次救人";
int t=lidu;
lidu*=3;
jiyu[x]+=lidu*2;
jiyu[y]-=lidu;
lidu=t;
}
if(xX==4){
if(xintai[x]==0) lidu=0;
else{
if(xintai[x]<0) lidu=ran()%(-xintai[x])+1,lidu=-lidu;
else lidu=ran()%xintai[x]+1;
}
xintai[x]-=lidu;xx=xintai[x];
xintai[y]+=lidu;yy=xintai[y];
t1="点心态";
int t=lidu;
lidu/=2;
if(lidu<0) lidu=-lidu;
jiyu[x]+=lidu*2;
jiyu[y]-=lidu;
lidu=t;
}
if(xX==5){
if(tui[x]==0) lidu=0;
else lidu=ran()%tui[x]+1;
tui[x]-=lidu;xx=tui[x];
tui[y]+=lidu;yy=tui[y];
t1="分钟颓废时间";
int t=lidu;
lidu/=2;
jiyu[x]+=lidu*2;
jiyu[y]-=lidu;
lidu=t;
}
if(xX==6){
if(si[x]==0) lidu=0;
else lidu=ran()%si[x]+1;
si[x]-=lidu;xx=si[x];
si[y]+=lidu;yy=si[y];
t1="次死亡";
int t=lidu;
lidu*=3;
jiyu[x]+=lidu*2;
jiyu[y]-=lidu;
lidu=t;
}
if(xX==7){
if(xueli[x]==0) lidu=0;
else lidu=ran()%min(xueli[x]+1,2ll);
xueli[x]-=lidu;xx=xueli[x];
xueli[y]+=lidu;yy=xueli[y];
t1="级学历";
int t=lidu;
lidu*=10;
jiyu[x]+=lidu*2;
jiyu[y]-=lidu;
lidu=t;
}
if(xX==8){
if(zhuyi[x]==0) lidu=0;
else{
if(zhuyi[x]<0) lidu=ran()%(-zhuyi[x])+1,lidu=-lidu;
else lidu=ran()%zhuyi[x]+1;
}
zhuyi[x]-=lidu;xx=zhuyi[x];
zhuyi[y]+=lidu;yy=zhuyi[y];
t1="点注意力";
int t=lidu;
lidu*=3;
if(lidu<0) lidu=-lidu;
jiyu[x]+=lidu*2;
jiyu[y]-=lidu;
lidu=t;
}
cout<<yuan[y]<<"盗取了"<<yuan[x]<<"的"<<lidu<<t1<<"!\n";
cout<<"现在"<<yuan[y]<<"有"<<yy<<t1<<","<<yuan[x]<<"有"<<xx<<t1<<"!";
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
return "";
}
if(zkflag){
zkflag=0;
int x=ran()%mingsiz;
while(ming[x]=="尸体"){
x=ran()%mingsiz;
}
int nandu=ran()%20+1+xueli[x]*3;
nandu=max(nandu,(20+xueli[x]*3)/3);
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED);
string zhuban=smi();
if(!(ran()%6))zhuban=yuan[x];
cout<<"在读"<<xuel[xueli[x]]<<"的"<<yuan[x]<<"参加了"+zhuban+"主办的难度为"<<nandu<<"的重要节点考核!Ta有"<<juan[x]<<"的学业,注意力为"<<zhuyi[x]<<"\n";
if(zhuban==yuan[x]){
cout<<"似乎有黑幕?!"+yuan[x]+"花费了 RP 使得难度变低了!\n";
nandu/=2;
jiyu[x]-=100;
}
if(zhuban!=yuan[x]&&!(ran()%4)){
cout<<yuan[x]<<"被主办方做局了!\n";
nandu*=2;
}
int xx=ran()%4,yy=((int)ran()%100)-50,flag=0;
if((xx==0&&zhuyi[x]<0)||(zhuyi[x]<yy-50)){
flag=1;
cout<<yuan[x]<<"发挥炸了!\n";
nandu=nandu*1.5;
}
if((xx==3&&zhuyi[x]>0)||(zhuyi[x]>yy+50)){
cout<<yuan[x]<<"发挥超常!\n";
nandu/=1.5;
}
if(juan[x]<nandu){
xintai[x]-=(nandu-juan[x])*14;
cout<<yuan[x]<<"只有"<<juan[x]<<"的学业,菜飞力!心态大崩的"<<yuan[x]<<"还剩余"<<xintai[x]<<"的心态。";
if(flag){
zhuyi[x]/=4;
cout<<'\n'<<yuan[x]<<"吸取经验教训,刻苦学习!TA的注意力上升到了"<<zhuyi[x];
}
}
else{
juan[x]=juan[x]/3;
int lidu=ran()%240+120;
tui[x]+=lidu;
xintai[x]+=lidu/3*2;
zhuyi[x]-=lidu/3;
cout<<yuan[x]<<"考的很好,于是颓!\n"<<yuan[x]+"颓废了"<<lidu<<"分钟!"+yuan[x]+"有了"<<xintai[x]<<"心态!一共颓了"<<tui[x]<<"分钟,学业下降到"<<juan[x]<<",注意力下降到了"<<zhuyi[x]<<'\n';
xueli[x]++;
cout<<"于是"<<yuan[x]<<"在读"<<xuel[xueli[x]];
mxxl=max(mxxl,xueli[x]);
}
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
return "";
}
if(xueflag){
xueflag=0;
int x=ran()%mingsiz;
while(ming[x]=="尸体"){
x=ran()%mingsiz;
}
int lidu=ran()%12+1;
juan[x]+=max(lidu+2+zhuyi[x]/3,0ll)/3;
tui[x]-=lidu*2;
tui[x]=max(tui[x],0ll);
zhuyi[x]+=lidu*1.75;
cout<<yuan[x]+"在"+sdi()+"正常学习了"<<lidu<<"小时!学业上升到"<<juan[x]<<"注意力上升到"<<zhuyi[x];
return "";
}
if(juanflag){
juanflag=0;
int x=ran()%mingsiz;
while(ming[x]=="尸体"){
x=ran()%mingsiz;
}
int XxX=ran()%2,flag=0;
if(XxX){
cout<<"吕明栩来压力在"+sdi()+"的"+yuan[x]+"了!";
if(mxxl==xueli[x]){
cout<<"可惜他找不到借口。\n";
return "";
}
flag=1;
}
int lidu=ran()%6+1;
juan[x]+=lidu;
xintai[x]-=lidu*(3+level)+ran()%(3+level);
tui[x]-=lidu*4;
tui[x]=max(tui[x],0ll);
zhuyi[x]-=lidu*2;
if(flag){
zhuyi[x]-=lidu/2;
}
if(!XxX){
nxt--;
}
if(nxt==0){
level++;
nxt=ran()%(3*level)+1;
xintai[x]-=lidu*(3+level)+ran()%(3+level);
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED);
dai[x]++;
cout<<yuan[x]<<"成为带动机房卷皮风气的最后一根稻草!大家的围殴让他心态大降!\n";
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
Sleep(shijiandeng);
Sleep(shijiandeng);
}
cout<<yuan[x]+"熬夜狂卷了"<<lidu<<"小时!"+yuan[x]+"剩余"<<xintai[x]<<"心态!学业上升到"<<juan[x]<<"!注意力下降到"<<zhuyi[x]<<"!";
if(!XxX){
cout<<"离带动风气还有"<<nxt<<"次!";
}
cout<<'\n';
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED);
if(xintai[x]<=0){
ming[x]="尸体";
si[x]++;
cout<<yuan[x]+"卷死了!\n";
siren++;
Sleep(shijiandeng);
}
return "";
}
if(tuiflag){
tuiflag=0;
int x=ran()%mingsiz;
while(ming[x]=="尸体"){
x=ran()%mingsiz;
}
int lidu=ran()%120+1;
zhuyi[x]-=lidu/5;
tui[x]+=lidu;
xintai[x]+=lidu/3*2;
cout<<yuan[x]+"颓废了"<<lidu<<"分钟!"+yuan[x]+"有了"<<xintai[x]<<"心态,注意下降到"<<zhuyi[x]<<",一共颓了"<<tui[x]<<"分钟";
return "";
}
if(flagfs==1){
flagfs=0;
for(int i=0;i<mingsiz;i++){
if(ming[i]=="尸体"){
string t="";
int x=ran()%(mingsiz);
while(ming[x]=="尸体"){
x=ran()%(mingsiz);
}
ming[i]=yuan[i];
nai[x]+=xueli[i]+1;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED);
siren--;
return t+ming[i]+"被"+ming[x]+"复活了!";
}
}
return "看来这是个平安夜";
}
if(!flag2){
int x=ran()%mingsiz;
while(ming[x]=="尸体"){
x=ran()%mingsiz;
}
return ming[x];
}
else{
int x=1+ran()%(mingsiz-1);
flag2=0;
while(ming[x]=="尸体"){
x=1+ran()%(mingsiz-1);
}
return ming[1+ran()%(mingsiz-1)];
}
}
/*从句区:
和词库区一样,但要注意一一对应哦!*/
string lian1[]={"可惜" ,"在" ,"只要" ,"只有" ,"因为" ,"在"};
string lian2[]={",不然Ta就不会","时,Ta",",Ta就会","Ta才能","所以Ta","后,不久Ta就"};
void cka(int op){
cout<<lian1[op];
}
void cji(int op){
cout<<lian2[op];
}
int fen(int x){
return juan[x]*2-si[x]*10+nai[x]*3-tui[x]/8+xintai[x]/8+Fen[xueli[x]]-dai[x]*5+jiyu[x]*3;
}
bool cmp(int x,int y){
return fen(x)>fen(y);
}
int tdengdai=dengdai,tdadeng=dadeng,tshijiandeng=shijiandeng;
void panduan(){
if(KEY_DOWN('W')){
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN);
cout<<"启动超载!\n";
dengdai=0;
dadeng=0;
shijiandeng=0;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
Sleep(1000);
}
if(KEY_DOWN('R')){
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN);
cout<<"暂停...\n";
string sb="";cin>>sb;
cout<<"继续运行!\n";
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
}
if(KEY_DOWN('T')){
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN);
cin>>dengdai>>dadeng>>shijiandeng;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
Sleep(1000);
}
if(KEY_DOWN('E')){
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN);
cout<<"速度已重置!\n";
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
dengdai=tdengdai;
dadeng=tdadeng;
shijiandeng=tshijiandeng;
Sleep(1000);
}
if(KEY_DOWN('Q')){
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN);
cout<<"已启用预设速度!\n";
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
dengdai=yudengdai;
dadeng=yudadeng;
shijiandeng=yushijiandeng;
Sleep(1000);
}
}
signed main(){
/*解除freopen的注释会让代码直接输出文件,保存到哪里输出到哪里*/
// freopen("蓝精灵知波.txt","w",stdout);
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
fangsiz=sizeof(fang)/8,dongsiz=sizeof(dong)/8,mingsiz=sizeof(ming)/8,xingsiz=sizeof(xing)/8,fucisiz=sizeof(fuci)/8,liansiz=sizeof(lian1)/8;
cout<<"快捷键:\n Q:使用预设速度\n W:炒鸡加速\n E:重置为最初速度。\n R:暂停(随便打个什么字母后enter继续)\n T:输入速度。\n" ;
for(int i=0;i<mingsiz;i++) yuan[i]=ming[i];
for(int i=0;i<mingsiz;i++) xintai[i]=chushixintai+(int)ran()%chushixintai*4-chushixintai*2;
for(int i=0;i<mingsiz;i++){
zhuyi[i]=1;
if(xintai[i]<0){
cout<<yuan[i]<<"出师不利啊!\n";
}
}
/*参数区:
1. 目前只有从句频率是在控制台中输入的,其他参数需要在这里改源码
2. shandian:触发闪电概率,ganran:触发感染概率,fuchou:死后怨念复仇概率,fusu:复活概率
3. 当变量的数值为 x 时,一回合触发对应事件的概率为 1/x */
nxt=ran()%10+1;
cout<<"请输入从句频率,输入越大,频率越低:";
int cong,Juan=5,fusu=5,Tui=5,Xue=1,zk=5,Jiyu=10;
// int cong,Juan=114514,fusu=114514,Tui=114514,Xue=114514,zk=1,Jiyu=114514;
cin>>cong;
long long T=1e18;//最多运行回合,防卡死
while(T--){
panduan();
freopen("记分板.txt","w",stdout);//这里的代码会在你的电脑上生成记分板,保存到哪里输出到哪里
for(int i=0;i<mingsiz;i++){
pai[i]=i;
}
sort(pai,pai+mingsiz,cmp);
for(int i=0;i<mingsiz;i++){
cout<<yuan[i]<<"在读"<<xuel[xueli[i]]<<",学业为"<<juan[i]<<",奶了"<<nai[i]<<"个人,死了"<<si[i]<<"次,还剩"<<xintai[i]<<"的心态,颓了"<<tui[i]<<"分钟,带动了"<<dai[i]<<"次风气,有"<<zhuyi[i]<<"点注意力,有"<<jiyu[i]<<"点 RP。\n";
}
for(int i=0;i<mingsiz;i++){
cout<<"#"<<i+1<<" "<<yuan[pai[i]]<<"得分:"<<fen(pai[i])<<'\n';
}
panduan();
// freopen("蓝精灵知波.txt","w",stdout);
freopen("CON","w",stdout);
panduan();
if(mingsiz-siren+1>=2&&!(ran()%Jiyu)){
jiyuflag=1;
cout<<smi();
cout<<'\n';
Sleep(shijiandeng);
Sleep(shijiandeng);
}
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
panduan();
if(!(ran()%Xue)){
xueflag=1;
cout<<smi();
cout<<'\n';
Sleep(shijiandeng);
}
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
panduan();
if(!(ran()%Juan)){
juanflag=1;
cout<<smi();
Sleep(shijiandeng);
}
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
panduan();
if(siren&&!(ran()%fusu)){
flagfs=1;
cout<<smi();
cout<<'\n';
Sleep(shijiandeng);
Sleep(shijiandeng);
}
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
panduan();
if(!(ran()%Tui)){
tuiflag=1;
cout<<smi();
cout<<'\n';
Sleep(shijiandeng);
}
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
panduan();
if(!(ran()%zk)){
zkflag=1;
cout<<smi();
cout<<'\n';
Sleep(shijiandeng*3);
}
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
panduan();
if(!(ran()%cong)){
int r=ran()%liansiz;
cka(r);
szh(5);swe(5);
if(flag)sbi(5);
cji(r);
swe(2);
if(flag)sbi(3);
Sleep(dadeng);
cout<<'\n';
}
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
panduan();
szh(2);swe(2);
if(flag)sbi(3);
cout<<'\n';
Sleep(dadeng);
}
return 0;
}